【问题标题】:Ruby Watir WebDriver Net::ReadTimeoutRuby Watir WebDriver Net::ReadTimeout
【发布时间】:2017-10-17 16:11:25
【问题描述】:

在我使用 Watir 进行身份验证后,我正在尝试使用 Watir 获取 Facebook 的源代码。它给出了这个特定的错误。

/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill': Net::ReadTimeout (Net::ReadTimeout)

我认为是因为首页的AJAX请求太多,webdriver检测为页面未完全加载。所以在我登录后,我这样做了:

p "starts"
Watir::Wait.until {
  browser.div(:'class' => '_586i').exists?
}
p "finishes"

但是在打印“starts”之后会出现超时错误,并且没有得到网站的源代码。

【问题讨论】:

  • 这通常是由于互联网连接速度慢..
  • @ArupRakshit 我的网速真的很快。
  • 对于我为chrome浏览器Watir::Wait.until(300)和firefox设置的一些网站Watir::Wait.until(600)

标签: ruby watir watir-webdriver


【解决方案1】:

在我尝试之后,我经常在某些网站上遇到此错误,例如,browser.button.click 正在重定向到另一个加载大量 Ajax 的页面。我发现了这个:

browser.execute_script('document.getElementsByTag('button')[0].click()')
sleep 10

调整睡眠(或者,更好的是,.wait_until_present)会有所帮助。

【讨论】:

    【解决方案2】:

    您可以强制浏览器等到所有 ajax 调用都加载完毕

    sleep(1) until browser.execute_script("return jQuery.active") == 0

    【讨论】:

      猜你喜欢
      • 2018-12-12
      • 2013-05-30
      • 2014-12-08
      • 1970-01-01
      • 2020-05-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多