2017-10-29 21 views
-3

時間とともに変化するweblementの値を取得しようとしています。値は - Pending, Approved, Receivedです。Selenium:forループ内のweb要素の値を変更する方法

値がReceivedに変更されたときにループを停止する必要があります。私はコードの下で試してみましたが、1つのループで正常に実行された後、エラーのある2番目のループで停止します。webelement not found with the given xpath

for(int i=0;i<=50;i++) 
{ 
    String exactvalue=driver.findElement(By.xpath("//tr[2]/td")).getText(); 
     if (exactvalue.equals("Received")) 
     { 
      break; 
     } 
     else 
     { 
     driver.navigate().refresh(); 
     try { 
      Thread.sleep(3000); 
     } catch (InterruptedException e) { 
      throw new RuntimeException("executing sleep interrupted"); 
     } 

     } 
    } 

答えて

1

コードの下に置き換えてください。

あなたのコード:

String exactvalue=driver.findElement(By.xpath("//tr[2]/td")).getText(); 

と交換してください:

String exactvalue=driver.findElement(By.xpath("//tr["+i+"]/td")).getText(); 
+0

は、あなたがこのコードを試してみたことがありますか? –

+0

webelementの値はxpath = // tr [2]/tdにあり、web要素の値が「Received」に変更されるたびに50回ページをリフレッシュしてループを中断しようとしています。初めてうまく動作しますが、2回目にエラーが発生し、webelement xpathが正しくないというエラーが表示されます。私はページをリフレッシュすることは、セレンが焦点を緩める原因と考えています。あなたのコードを試してみると、xpath = // tr [0]/td、// tr [1]/td、// tr [2]/td、// tr [3]/tdとそうではありません。私のweb要素の値は// tr [2]/tdにあります。 –

+0

'// tr [2]/td'と言ったような特定の要素が必要な場合は、ここでforループを使用する意味は何ですか?あなたは私を更新できますか?なぜなら、ここではループのために使うのは意味がないからです。 –

関連する問題