rescue in receive
因为写ruby的时候感觉混身上下都拽起来了,所以比较喜欢用ruby写代码。今天遇到了一个webdriver timeout的问题,问题本身还是因为我对webdriver不了解以及破文档导致的。首先我们把问题简化一下:
driver = Selenium::WebDriver.for :safari
driver.navigate.to "http://www.faraway.com"
wait = Selenium::WebDriver::Wait.new(:timeout => 1000) # seconds
wait.until { driver.find_element(:css, 'input[name="username"]') }
因为考虑到网站太远了,速度比较慢,于是timeout设的值比较大:timeout => 1000
这里我们访问:faraway这个网站,然后等待出现输入框输入用户名。得到了如下错误信息:
/Users/twer/.rvm/gems/ruby-2.1.1@global/gems/selenium-webdriver-2.42.0/lib/selenium/webdriver/safari/server.rb:41:in`rescue in receive': timed out waiting for Safari to respond (Selenium::WebDriver::Error::TimeOutError)
from /Users/twer/.rvm/gem

本文讲述了作者在使用Ruby的Selenium WebDriver时遇到的超时问题,通过分析源代码和应用Monkey Patch,发现并解决了由于命令超时设置不当导致的问题。问题在于wait的超时与driver接收服务器响应的超时是两个不同的概念,调整driver创建时的timeout参数即可避免此类问题。
最低0.47元/天 解锁文章
1523

被折叠的 条评论
为什么被折叠?



