簡體   English   中英

在Selenium(Java)中出現“ NoSuchElementException”之后如何繼續執行?

[英]How to continue execution after “NoSuchElementException” in Selenium (Java)?

我正在嘗試從此頁面創建WebElement的ArrayList:

在此處輸入圖片說明

如果顯示了所有元素,則可以將它們添加到ArrayList中。

ArrayList<WebElement> TodoArray = new ArrayList<WebElement>();

                        TodoArray.add(todo1);

如果從網頁中刪除其中一個元素(非代碼),則在運行測試用例時會出現此錯誤:

org.openqa.selenium.NoSuchElementException: Unable to locate element: *[name='todo[9]']

有什么方法可以繞過此錯誤並強制Java跳過缺少的元素,但繼續添加顯示的元素?

我的代碼非常簡單。 我正在使用JUnit運行我的測試用例。 使用@FindBy批注正確定義了元素。

@FindBy(name="todo[1]")
    WebElement todo1;

我嘗試使用Try / Catch並使用NoSuchElementException包圍變量,但不確定如何設置其格式。 在這種情況下可以使用“ continue”關鍵字嗎?

希望我提供了足夠的信息。 任何幫助,將不勝感激。 謝謝!

Java Try / Catch的確切語法適合您:

try {
  @FindBy(name="todo[1]")
       WebElement todo1;
}
catch(NoSuchElementException e) {
  System.out.println("could not find element todo1");
}
...
//rest of your code

這有幫助嗎?

或者,您可以通過以下方式使用流暢的等待:

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
    .withTimeout(10, SECONDS)
    .pollingEvery(1, SECONDS)
    .ignoring(NoSuchElementException.class);

我認為這是一種更優雅的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM