2016-11-14 5 views
0

シナリオを自動化しようとしましたが、すべてのドロップダウンオプションを選択する必要があり、そのオプションを1つずつクリックしなければならないという条件がありました。私はコードを試してみましたが、最初のオプションだけをクリックします。そして、失効した要素としてエラーを表示します。 助けてください。セレンのwebdriverの古い要素の例外

+0

ページが読み込まれ、すべてのリクエストが完了した後、要素を検索できることを確認する必要があります。 – lauda

+0

POMを使用していますか?はいの場合、私は何かを提案することができます。 –

+0

はい、教えてください – Test

答えて

0

StaleElementExceptionが見つかった場合、DOMが更新されてから要素とやりとりしようとします。

どうすれば処理できますか? hereからこの優秀ソリューションを撮影

public boolean retryingFindClick(By by) { 
     boolean result = false; 
     int attempts = 0; 
     while(attempts < 2) { 
      try { 
       driver.findElement(by).click(); 
       result = true; 
       break; 
      } catch(StaleElementException e) { 
      } 
      attempts++; 
     } 
     return result; 
} 

:要素を複数回クリックしようとすると、次のクリックメソッドを使用します。

0

ドロップダウンからオプションを選択すると、DOMも更新されています。したがって、オブジェクトも更新する必要があります。サンプルコードスニペットを参照してください:

Select select = new Select(driver.findElement(By.cssSelector("your dropdown's locator"))); // you may use any locator of your choice 
    List<WebElement> options = select.getOptions(); 

    for(WebElement option : options){ 
      select.selectByVisibleText(option.getText()); 

      //re-assign your select object since your page has been reloaded after selecting an option 
      select = new Select(driver.findElement(By.cssSelector("your dropdown's locator"))); 
    } 
+0

これを試してみましたが、同じ – Test

関連する問題