【发布时间】:2018-03-08 19:50:51
【问题描述】:
如果动态发生任何错误,错误消息会显示在网站上。就我而言,如果发生错误,会出现弹出窗口,我需要单击“确定”按钮。
问题是,使用所有 Selenium 技巧,我无法避免 NoSuchElementException 或“无法单击元素”异常。预期:如果出现错误弹窗,点击确定,如果没有,就继续跳过这些ifs。我正在遵循这种方法:
PageFactory 元素和方法。
@FindBy(id='locator')
List<WebElement> errorElement1;
@FindBy(id='locator2')
List<WebElement> errorElement2;
Usage:
if(errorElement1.size() > 0) {
errorElement1.get(0).click();
}
if(errorElement2.size() > 0) {
errorElement2.get(0).click();
}
问题,如果我使用errorElement1.isDisplayed方法,我得到NosuchElementException。
我尝试了所有可以在这里找到的技巧,到目前为止没有成功。谢谢!
【问题讨论】:
-
谢谢你们,我会尽快标记答案,我正在尝试实施所有选项,并在工作正常时回复您!谢谢大家,不胜感激!
-
您能否澄清这些错误弹出窗口是否与当前正在执行的测试用例或后台运行的某些与正在执行的测试用例无关的进程有关?如果这些属于前者,则应逐案处理,如果应发生错误且未出现弹出窗口,则测试应失败,反之亦然。但是,如果稍后,在后台进程错误消息中,那么您需要联系开发人员以获得一个框架来关闭这些以进行测试。也许通过设置 cookie 或标志。当弹出窗口出现时,仅处理点击不会管理所有情况。
-
@Grasshopper:谢谢!与我的测试用例无关,根本没有关系。鉴于该站点具有多个外部系统,“A”为我们提供搜索结果,“B”处理计算。没关系。环境出现问题,UI 上出现警告消息。 (不是错误页面,只是在设计上)没有弹出窗口。问题是,当一个外部系统关闭或发生某些事情时,该站点不会关闭,所有 UI 组件都可以正常工作,只会出现一条警告消息。我想查看这些警告信息。如果出现,则抛出异常。如果没有,请继续测试。
-
@Grasshopper:我的想法是,一个帮助类包含所有错误元素(PageFactory),只有一个健壮的方法可以检查所有内容。当我调用此方法时,框架会遍历站点上的所有错误元素,如果其中一个可见,则抛出异常。如果没有,请继续。在这种情况下,我可以在任何地方使用它,因为只有一个大错误验证器处理所有错误消息。 IF 中的 isDisplayed 和 List
大小不起作用。 Try catch 会很有用,但我不知道如何实现这一点。非常感谢!
标签: java selenium selenium-webdriver page-factory