1. ホーム
  2. testing

[解決済み] カスタム属性を使用しているHTML要素からテキストを取得するには?

2022-02-15 17:32:34

質問

私はSelenium framework 2.0 Web driverで作業しており、data-automation-idのような属性を持つspanから値を取得したいのですが、どうすればいいですか?HTMLコードは以下の通りです。

<span data-automation-id="SEL_ERR">
  Error Description
</span>

今度は、属性付きのスパンでテキストを読み込みたい。 データ・オートメーション・ID をSEL_ERRに設定してください。

私はすでに以下のコードを試しましたが、無駄でした。

driver.findElement(By.tagName("span")).getAttribute("data-automation-id");

解決方法は?

簡単なことです。現在、あなたは 非常に 最初 span をドキュメント全体で使用します。

それが欲しいものであるかどうかは、どうやって判断するのですか?

出会う。 .findElements() . ロケータに合致する最初の要素を取得する代わりに、次のようなリストを取得します。 あらゆる というように、ある条件を満たす要素がある。

HTMLがあまり共有されていないので、これが独自要素かどうかわからない。

ただし、これには2つのアプローチがあるんですね。

1)使用する .findElements を取得します。 すべて span という属性を持つ要素に絞り込みます。 data-automation-id の値を持つ SEL_ERR

または(推奨)。

2)使用する .findElement Seleniumがそれを見つけることができない場合、よりターゲットを絞ったセレクタで、それが存在しないことを知ることができます。

driver.findElement(By.cssSelector("span[data-automation-id='SEL-ERR']"));

または

3) 2)の修正版。もしSeleniumがそれを見つけられない場合、例外を投げます。例外はコストがかかります。を使うことができます。 .findElements これは、探している要素が見つからない場合、単に空のリストを返すだけです (1)で説明しました)。

driver.findElements(By.cssSelector("span[data-automation-id='SEL-ERR']")).size() != 0;