【问题标题】:Watir-webdriver: how to force the click method to wait for the page to load completelyWatir-webdriver:如何强制点击方法等待页面完全加载
【发布时间】:2012-05-11 09:33:52
【问题描述】:

在之前使用 Watir 之后,我最近开始使用 Watir-Webdriver,因为我需要一些 webdriver 中存在但 Watir 中没有的功能。我在 watir-webdriver 中遇到了一个我在 Watir 中从未遇到过的问题。

每当在 Watir 的按钮上使用 click 方法时,它都会隐式等待新页面完全加载。我在 Watir-webdriver 文档中读到了等待,在 question 中,watir-webdriver 中的等待已更改,以适应 AJAX 对网页所做的动态更改。现在,我正在自动化的页面没有任何 AJAX 元素,它只包含静态元素。

但是当我在 watir-webdriver 中使用 click 方法时,它并没有等待下一个页面隐式加载,而是立即执行调用中的下一行。我可以使用 wait_until_present 但是在等待页面加载点击似乎是标准行为时,对很多页面执行此操作对我来说似乎有点过头了。

我是否缺少一些需要切换的选项,以便在 watir-webdriver 中模拟 Watir 的点击方法?

【问题讨论】:

  • 您确定页面没有通过 javascript 调用(例如自定义控件、jquery 等)加载部分内容吗?
  • 等待没有太大变化,因为我们添加了额外的辅助方法,以便您更好地处理浏览器报告已完成加载页面的情况(加载了 html 中指定的所有文件) 但客户端操作仍在呈现、进行更改和/或加载其他内容。如果发生大量 javascript 和 CSS 类魔法来控制页面上对象的定位和呈现,即使在“静态”页面中,有时也会发生这种情况。

标签: ruby watir watir-webdriver webautomation


【解决方案1】:

如果您在浏览器指示页面已加载时遇到问题,但客户端仍在发生问题(可能是 javascript 代码执行或 css 逻辑等),那么我建议在前面使用 'when_present' decorator你的行动。

这比必须放入单独的等待步骤要干净一些,并且比固定的睡眠时间等要好得多。

browser.button(:how => 'what').when_present.click

【讨论】:

  • 我尝试了 when_present 指令,它帮助我找到了最初的问题。卸载 windows-api 和 win32api gem 后,问题解决了。
【解决方案2】:

如果您希望内容加载但不点击,您也可以等待 div 加载。

browser.div(:how => 'what').wait_until_present

【讨论】:

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