5

私は Selenium フレームワーク 2.0 Web ドライバーに取り組んでおり、data-automation-id のような属性を持つスパンから値を取得したいと考えています。HTMLコードは以下の通り

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

ここで、属性data-automation-idが SEL_ERR に設定された範囲内のテキストを読みたいと思います。

私はすでに以下のものを試しましたが、無駄だったので、誰かがコードを修正するのを手伝ってくれますか?

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

2 に答える 2

6

それは本当に簡単です。現在、ドキュメント全体で最初のもの を取得しています。 span

それがあなたが望むものであるかどうかをどうやって知るのですか?

会いましょう.findElements()。ロケーターを満たす最初の要素を取得する代わりに、基準を満たすすべての要素のリストを提供します。

あなたは HTML の多くを共有していないので、これが独自の要素かどうかはわかりません。

ただし、これには 2 つのアプローチがあります。

1) を使用.findElementsしてすべての要素を取得し、値がspan次の属性を持つ特定の要素に絞り込みます。data-automation-idSEL_ERR

または (推奨):

2) .findElement1) で説明した要素を具体的にターゲットとするセレクターで使用します... Selenium がそれを見つけられない場合、よりターゲットを絞ったセレクターを使用すると、それが存在しないことがわかります。

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

また:

3) 2) の修正。Selenium がそれを見つけられない場合、例外がスローされます。例外はコストがかかります。代わりに (1) で述べた)を使用できます.findElements。これは、探している要素が見つからない場合に空のリストを返すだけです。

driver.findElements(By.cssSelector("span[data-automation-id='SEL-ERR']")).size() != 0;
于 2013-11-08T15:05:05.097 に答える