我有一个测试来获取页面。页面上有大量的复选框,我正在寻找的复选框白天消失。
如果没有这样的复选框,我的测试处理将停止并出现以下错误:
...(Selenium :: WebDriver :: Error :: NoSuchElementError)...
我现在正在编写测试如下:
driver.navigate.to 'http://test.com/'
driver.find_element(:id, "checkbox1").click
我希望测试忽略这些行,当页面上没有复选框时,只有当它出现时才尝试点击它。
答案 0 :(得分:0)
Ruby允许你编写这样的代码:
driver.find_element(:id, "checkbox1").click if driver.find_element(:id, "checkbox1").displayed
?
但是,在这种情况下,由于“if”中的find_element会发生同样的错误。
但是,如果您编写方法或扩展WebDriver类,您可以执行以下操作;
driver.find_element(:id, "checkbox1").click if element_displayed?(driver,id: =>"checkbox1")
有很多方法可以解决这个问题,但你可以得到这个想法
答案 1 :(得分:0)
为了达到这个目的,你必须使用begin ...... rescue block,如下所示:
begin
driver.find_element(:id, "checkbox1").click
rescue Selenium::WebDriver::Error::NoSuchElementError
# do nothing
end
在上面的代码中,如果找到了元素,则会单击它。如果找不到,那就什么都不做;它只会捕获异常。