我正在使用selenium webdriver并尝试让页面对象在报告测试失败之前多次查看页面。我的问题是我得到的错误没有被我的开始救援区抓住 这是错误
Selenium :: WebDriver :: Error :: NoSuchElementError:无法找到元素:{“method”:“id”,“selector”:“不存在”}
class ManageMembers < Nav
def initialize
super
ready = false # Used to indicate if all elements expected are present
tryCount = 0# A counter to track the number of attempts to
while(ready == false)
puts "initalizing managemembers"
#things on the side menue
begin
$driver.find_element(:id, "does not exist")
$driver.find_element(:id, "sidebar")
$driver.find_element(:id, "sidebar").find_element(:link, "Manage Members")
$driver.find_element(:id, "sidebar").find_element(:link, "Create Member")
@sidebar = true
rescue @sidebar = false
end
答案 0 :(得分:1)
将此作为答案添加,以便我们将此问题标记为已回答。
class ManageMembers < Nav
def initialize
super
ready = false # Used to indicate if all elements expected are present
tryCount = 0# A counter to track the number of attempts to
while(ready == false)
puts "initalizing managemembers"
#things on the side menue
begin
$driver.find_element(:id, "does not exist")
$driver.find_element(:id, "sidebar")
$driver.find_element(:id, "sidebar").find_element(:link, "Manage Members")
$driver.find_element(:id, "sidebar").find_element(:link, "Create Member")
@sidebar = true
rescue Exception => e
@sidebar = false
end
答案 1 :(得分:0)
当您使用块语法(begin ... rescue ... end
)而不是内联语法(do_something rescue recover_from_something
)时,您需要将救援语句放在下一行。现在你正在混合两种语法风格。
begin
$driver.find_element(:id, "does not exist")
$driver.find_element(:id, "sidebar")
$driver.find_element(:id, "sidebar").find_element(:link, "Manage Members")
$driver.find_element(:id, "sidebar").find_element(:link, "Create Member")
@sidebar = true
rescue
@sidebar = false
end
如果您完全拯救begin ... end
块(使其成为一个完整的声明),但这看起来糟糕,这不适用,我建议使用完整块语法:
begin
$driver.find_element(:id, "does not exist")
$driver.find_element(:id, "sidebar")
$driver.find_element(:id, "sidebar").find_element(:link, "Manage Members")
$driver.find_element(:id, "sidebar").find_element(:link, "Create Member")
@sidebar = true
end rescue @sidebar = false
再次,不要做最后一点;)