ADFで生成されたツリーを持つWebサイトにSeleniumを使用して、テスト用のフレームワークを構築しようとしています。ツリーは次の構造になります。
<table>
<tr>
<td>
<div>
<span>
<a id="AN_ID" title="Expand" onclick="return false" href="#"></a>
</span>
<img>
<img>
<span>SOME_TEXT</ span>
</div>
</td>
</tr>
<tr></tr>
<tr></tr>
</table>
私が望んでいるのは、次のように、テキストを使用してアンカーの ID を見つけることができる XPath 関数を持つことです。
selenium.getAttribute("xpath=//span[text()='"+text+"']/preceding-sibling::span[1]/child::a@id");
関数が呼び出されたときにテキストが関数に入力される場所。文字列が一意でない場合に問題が発生します。そこで、次のように関数に位置を追加しようとしました。
selenium.getAttribute("xpath=//span[text()='"+text+"']["+occurrence+"]/preceding-sibling::span[1]/child::a@id");
したがって、関数はテキストと文字列のツリー内の出現の両方で呼び出します。これは、最初に出現した ID を見つけるために機能していますが、特定の文字列が 2 番目に出現した ID を見つけることができません。
私も使ってみました
[text()= "" and position()= ""]
しかし、これはまったく機能しません。
各アンカーは、サブレベル (上記と同じ構造) のすべてのテーブル行を含む新しいテーブルを生成するため、ツリーのサブレベルごとに新しいテーブルが作成されます。