セレンとXPathを用いた場合を無視して、テキストによる要素をどのように見つけますか

BelovedFool:

私は、Javaのバージョン「1.8.0_191」とセレン3.141.59を使用しています。

私は、ページの単語「エラー」または「erreur」が含まれているかどうかを確認しようとしています。また、私はそれがケース小文字を区別しないようにしたいです。

テキストを見つけることは簡単です:

List<WebElement> elementList = driver.findElements(By.xpath("//*[contains(text(), 'error')]"));

私はそれが大文字と小文字を区別すること難しい時間を過ごしていことで。これまでのところ私は(に触発され、これを試してみましたこの質問):

List<WebElement> elementList = driver.findElements(By.xpath("/html/body//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'error')]"));

しかし、それは次のエラーを返します。

org.openqa.selenium.WebDriverException: TypeError: Expected an element or WindowProxy, got: [object Text] {}

また、私はこれを試してみました:

 List<WebElement> elementList = driver.findElements(By.xpath("//*[contains(transate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'error')]"));

(それは法的な表現ではありませんので)しかし、それはどちらか動作しません。

だから、この仕事を作る方法で任意のアイデア?

DebanjanB:

作成するには、リストのテキスト含むウェブページ内の要素のエラーは、使用することができ、上/下の例を無視translate()内の関数をは次のように:

  • 構文:

    translate('some text','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')
    
  • コードの行:

    List<WebElement> elementList = driver.findElements(By.xpath("//*[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'error')]"));
    

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=210203&siteId=1