Selenium ElementNotFoundException当循环中的元素

时间:2014-02-17 14:40:16

标签: selenium-webdriver

我正在编写一个元素的selenium代码。它将错误标记为ElementNotFoundException

我知道元素被隐藏或其风格为无的原因 我用Google搜索,我找到了以下解决方案:

((JavascriptExecutor) this.webdriver).executeScript("arguments[0].click();", elementToClick);

...但我的元素在一个循环中。对于第一次迭代,它是成功的,但在进一步的迭代中它会抛出相同的异常。

任何人都可以解释arguments[0]吗?

1 个答案:

答案 0 :(得分:1)

是的,在您的示例中,“arguments [0]”= elementToClick。此外,当我没有其他选项来点击某些东西时,我只使用了JavascriptExecutor,而且几乎从未发生过。例如,我使用JavascriptExecutor进行分页,因为Selenium没有正确执行此功能的功能。

所以,如果您正在寻找的元素确实设置了'display = none',那么您应该做的是使用带有WebDriverWait(或FluentWait)的ExpectedConditions.visibilityOfElementLocated条件。

对于有时可见或不可见的元素的所有其他情况,请使用ExpectedConditions.presenceOfElementLocated。

将Wait类与ExpectedConditions一起使用,您可以使用while循环来忽略某些异常并重新尝试直到满足条件。