超时设置

场景

webdriver中可以设置很多的超时时间

  • implicit_wait。识别对象时的超时时间。过了这个时间如果对象还没找到的话就会抛出NoSuchElement异常
  • script_timeout。异步脚本的超时时间。webdriver可以异步执行脚本,这个是设置异步执行脚本脚本返回结果的超时时间
  • page_load。页面加载时的超时时间。因为webdriver会等页面加载完毕在进行后面的操作,所以如果页面在这个超时时间内没有加载完成,那么webdriver就会抛出异常

代码

  driver = Selenium::WebDriver.for :chrome
  # 定位对象时给3s的时间
  # 如果3s内还定位不到则抛出异常
  driver.manage.timeouts.implicit_wait = 3 # seconds

  # 页面加载超时时间设置为5s
  driver.manage.page_load = 5 #seconds

  # 异步脚本的超时时间设置成3s 
  driver.manage.script_timeout = 3 #seconds

讨论

由于webdriver是通过给driver发送http请求来进行每步操作的,因此就可以设置http请求的超时时间。默认ruby binding的http client超时时间是60s,你可以通过下面的代码来改变这一设置。

  client = Selenium::WebDriver::Remote::Http::Default.new
  client.timeout = 120 # seconds
  driver = Selenium::WebDriver.for(:chrome, :http_client => client)

results matching ""

    No results matching ""