私のページには、「foo:searchResults12345」のような静的部分 (「foo:searchResults」と動的にレンダリングされたもの - 1 つ以上の数字) で構成される ID がいくつかあります。静的部分「foo」を含むすべての ID を取得したいパターンテキストに正規表現を使用することを考えていますが、問題は、selenium.getAllIdsInPage() など、これを支援するためのメソッドが Selenium Api に見つからないことです。同じ問題と解決策を見つけましたか?
質問する
2296 次
2 に答える
2
ループと組み合わせgetXpathCount
て、各一致を繰り返すことをお勧めします。たとえば、次の xpath を使用すると、一致するノードの総数が返されます。getXpathCount
//*[starts-with(@id, 'foo:searchResults')]
次に、次の例の XPath を使用して、各一致をループできるようにする必要があります。
/descendant::*[starts-with(@id, 'foo:searchResults')][1]
1 は、ループ内の現在のカウントに置き換えられます。
以下は、一致する ID を system.out に出力する Java の例です。
@Test
public void outputDynamicIds() {
selenium.open("http://www.example.com/");
int elementCount = selenium.getXpathCount("//*[starts-with(@id, 'foo:searchResults')]").intValue();
for (int i = 1; i < elementCount+1; i++) {
System.out.println(selenium.getAttribute("/descendant::*[starts-with(@id, 'foo:searchResults')][" + i + "]@id"));
}
}
于 2009-11-23T22:08:23.657 に答える
0
もう 1 つの方法は、カスタムの場所戦略を使用することです。現在のプロジェクトでこれを行っていますが、正常に動作します。
特定のケースでは、各要素の id 属性がロケーター文字列 (例の静的部分) で始まるかどうかをチェックするカスタム戦略を作成し、そうであればこの要素を返すことができます。
このアプローチははるかにクリーンだと思います。
于 2011-06-29T12:18:58.303 に答える