【问题标题】:Stop loading page watir-webdriver停止加载页面 watir-webdriver
【发布时间】:2011-12-11 11:46:27
【问题描述】:

有没有办法在 Firefox 上停止使用 watir-webdriver 加载页面?或者即使页面仍在加载,是否有办法强制我的脚本中的某些内容?在我的脚本中,网站会挂起,脚本最终会超时。

【问题讨论】:

    标签: ruby watir watir-webdriver


    【解决方案1】:

    您可以使用 Timeout 类强制它在等待一段合理的时间后放弃(这也是 Watir 在内部执行它的等待方式)

    begin
      Timeout::timeout(10) do
        # perform actions that may hang here
      end
    rescue Timeout::Error => msg
      put "Recovered from Timeout"
    end
    

    【讨论】:

    • watir 6.7,超时将退出执行,但不会停止页面加载。它仍然会等待页面加载完成以响应我的任何指令。
    【解决方案2】:

    如果网站挂起,如果元素没有出现,您应该能够使用等待方法使脚本超时。这些主要用作 AJAX 的答案,但它们也应该适用于这种情况。例如,如果脚本在您单击链接后挂起,并且您希望下一页具有特定的标题或文本:

    @browser.link(:name => "Let's Hang!").click
    Watir::Wait.until(30) { @browser.title == "new page" }
    

    Watir::Wait.until(30) { @browser.text.include? ("confirmation text") }
    

    @browser.image(:src => "awesome.jpg").wait_until_present(30)
    

    其中的每一个都将等待 30 秒以等待条件满足,然后退出并出现错误。您可以在应用的挂起窗口内更改退出时间 (30)。

    【讨论】:

    • 我不认为这会起作用,好像被触发的页面加载永远不会完成测试将不会进行到可以开始等待的地步。
    • 有没有人有一个页面当前没有加载到测试的网站?
    • 您可以使用 click_no_wait 代替 click 吗?
    • 我有时会使用拉取网络连接来模拟无法加载的站点,诀窍是正确计时,以便您开始从站点获取数据,然后它可以'不获取页面的其余部分。
    【解决方案3】:

    请查看 Selenium 问题http://code.google.com/p/selenium/issues/detail?id=687 尚未修复,watir-webdriver 也是基于 Selenium,希望它能回答您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      相关资源
      最近更新 更多