救援没有发现错误' Selenium :: WebDriver :: Error'

时间:2015-07-02 11:21:06

标签: ruby selenium-webdriver rescue

当我的代码遇到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

1 个答案:

答案 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