2016-11-02 2 views
0

要素「<button>」をテキスト「Day」で取得しようとしています。私はそれを見つけたことができない要素を取得するために適切な方法を使用しセレンのJava:xpathを使用して特定のテキストのボタンが見つからないのはなぜですか?

WebElemen dayButton = driver.findElement(By.xpath("//button[text()='Day']")); 

は代わりに、私はこのようにボタン要素を見つけなければならない:

List<WebElement> buttons = driver.findElements(By.xpath("//button")); 
     for (WebElement button : buttons) { 
      if (button.getText().equals("Day")) { 
       System.out.println("Button found"); 
       button.click(); 
       break; 
      } 
     } 

誰もが理由を知っていますか?一見

+0

「日」という単語には周囲のスペースがありますか?もしそうなら、テキストのためにいくつかのnormalize-space関数を試してみてください... – Grasshopper

+0

htmlを投稿できますか? –

答えて

1

、このコード行は、常にリストを返す

WebElemen dayButton = driver.findElements(By.xpath("//button[text()='Day'")); 

driver.findElements間違っています。テキストDayの完全一致を持つ単一WebElementを見つける必要があるのであれば、これを使用する:

WebElement dayButton = driver.findElement(By.xpath("//button[text()='Day']")); 

これも使用することができます。

WebElement dayButton = driver.findElement(By.xpath("//button[.='Day']")); 

注:という事実2番目のコードスニペットが機能していることは、ボタンテキストのHTMLに先頭と末尾のスペースがないことを示します。ただし、テキストに先頭と末尾にスペースがある場合は、xpathにnormalize-space()関数を使用して処理します。

+0

私が質問を書いたとき、driver.findElementsを置くのは間違いでした。私はdriver.findElementを参照しました。答えをありがとう –

関連する問題