1

問題は、次のシナリオで Selenium JAVA API とのリンクを見つける方法です。

  • リンクに ID がありません
  • 多くのリンクがありますが、これらは href だけが異なります
  • クリックしたいリンクの href (部分文字列) に関する固有の情報を知っている
  • すべてのリンクに同じテキストがあります

私はこのメソッドを書き、xpaths マッチ関数を使用しようとしました:

public void clickOnLink(String sub_hrefText){
    String xpath = String.format("a[matches(@href,'%s')]",sub_hrefText);
    browser.findElements(By.xpath(xpath)).get(0).click();
}

しかし、私は例外を得ました:

InvalidSelectorException

4

1 に答える 1

1

あなたは言う

クリックしたいリンクの href (部分文字列) に関する固有の情報を知っている

そのため、XPath 1.0 関数を使用できますcontains(haystack, needle)( W3C XPath 仕様を参照)。

また、直接の子ノードだけでなく、ドキュメント ツリーのさらに下にあるコンテキスト ノード (この場合はルート ノード) の子孫要素も選択するために、式の先頭に//or -- safe --が必要です。.//aa

これにより、次のことがわかります。

public void clickOnLink(String sub_hrefText){
    String xpath = String.format(".//a[contains(@href, '%s')]",sub_hrefText);
    browser.findElements(By.xpath(xpath)).get(0).click();
}
于 2013-08-29T17:57:07.130 に答える