elementIsNotVisible在Selenium中抛出noSuchElementError

时间:2018-06-14 15:52:11

标签: node.js selenium automated-tests

我编写了一个测试,以确保使用节点js在我的selenium测试中关闭滑动面板。每当我关闭面板时,我都使用条件elementIsNotVisible。但是会引发错误noSuchElementError。此错误在技术上是正确的,因为该元素不应再出现在页面上,但也不应该elementIsNotVisible正确吗?

Test.js文件:

await driver.wait(until.elementIsVisible(testPage.addAllAnnotationsButton(driver)), 20000);
await testPage.exitGeneAnnotationsButton(driver).click();
await driver.wait(until.elementIsNotVisible(testPage.addAllAnnotationsButton(driver)), 20000);

Page.js文件:

const testPage = {
      addAllAnnotationsButton: driver => driver.findElement(By.css(testPage.addAllAnnotationsButtonSELECTOR))
}

错误消息(注意 - 在调用elementIsNotVisible的行上抛出错误消息):

NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"div.slideout.opened:nth-child(6) button.ui.button.medium:nth-child(2)"}

编辑1:请注意,我已尝试使用stalenessOf,但仍会收到相同的错误。

1 个答案:

答案 0 :(得分:0)

正如您所提到的,当您关闭面板时,使用条件 elementIsNotVisible

此处关闭面板后, DOM 中不存在相应的网络元素。这就是你得到 NoSuchElement异常的原因。

建议:使用 invisiblityofElement 代替 elementIsNotVisible

虽然NoSuchElement异常背后有很多原因,但最常见的一种方法是尝试与 frame / iframe 中的元素/元素进行交互,而不会切换Web驱动程序的焦点。

希望这会有所帮助。