当我的代码遇到select_to_city(to)
时,
我想它会突破Selenium::WebDriver::Error
但它没有停止救援为什么?
class Tiger123 < ClassTemplate
def form_action(from, to, flight_date)
begin
select_to_city(to)
select_depart_date(flight_date)
rescue Selenium::WebDriver::Error => e
binding.pry
rescue Exception => e
binding.pry
end
end
def select_to_city(to)
@driver.find_element(:id, "selDestPicker").click
@driver.find_element(:id, to).click
end
最后,我在select_to_city函数
中添加了rescue
它确实有效。我不明白为什么它没有用form_action
方法拯救
def select_to_city(to)
begin
@driver.find_element(:id, "selDestPicker").click
@driver.find_element(:id, to).click
rescue Exception => e
binding.pry
end
end
答案 0 :(得分:0)
拯救Selenium::WebDriver::Error
不起作用,因为异常不属于该类。 Selenium::WebDriver::Error
只是包含不同错误类型的模块。
在救助一般Exception
期间,您可以使用ancestors
方法查看异常类及其祖先:
rescue Exception => e
p e.class.ancestors
#=> [Selenium::WebDriver::Error::NoSuchElementError, Selenium::WebDriver::Error::WebDriverError, StandardError, Exception, Object, Kernel, BasicObject]
end
数组中的第一项是异常的类,恰好是Selenium中的特定错误。下一个项Selenium::WebDriver::Error::WebDriverError
是所有Selenium异常继承的父类。您要拯救这个父类:
def form_action(from, to, flight_date)
begin
select_to_city(to)
select_depart_date(flight_date)
rescue Selenium::WebDriver::Error::WebDriverError => e
binding.pry
end
end