【问题标题】:Wait For Window to load without using wait for elements present - Watir Webdriver等待窗口加载而不使用等待元素存在 - Watir Webdriver
【发布时间】:2015-01-17 05:55:18
【问题描述】:

Watir Webdriver 中是否有任何功能可以等待新窗口选项卡加载?

现在发生的情况是测试没有等待选项卡加载,因此我的脚本失败了。

我知道我可以等待网页中的一些可用元素。但我不想为每个网页都这样做。 如果没有可用的方法,我想在我的框架中为与库相同的方法编写一个新方法。

我是 watir webdriver 和 ruby​​ 编程的新手。所以请帮我写一个库函数以防万一......

【问题讨论】:

  • 问题是(1)Watir 在打开标签之前寻找标签还是(2)Watir 寻找在创建之前异步加载的元素?
  • @JustinKo 我观察到的是:测试没有等待页面加载。是的,watir 甚至在页面加载之前就在寻找一个元素。因此,由于找不到对象或不可见或类似的东西,测试失败了。如果我在那里添加一些隐式等待,它工作正常。所以肯定有一些问题。

标签: ruby selenium-webdriver watir-webdriver


【解决方案1】:

我可能会误解,但你的问题似乎说了两件事。一方面,您说 Watir 不会等待页面加载。但是你说你知道 Watir 可以等待,但你不想在每个页面上都这样做。

根据我的经验,我可能会再次误解,如果 Watir 速度过快并且您的页面没有加载,您别无选择只能让 Watir 在任何页面上等待一个问题。你还有什么想法?

如果您的页面在 30 秒内加载,您可以使用 .wait_until_present.when_present.(即,一旦元素可用,Watir 将继续前进,并在半分钟后超时)。

例如,如果您加载的页面在 div 中包含文本“Hello”,您可以让 Watir 等待最多 30 秒,以便该文本出现

browser.div(:text, 'Hello').wait_until_present

然后让您的测试从中断的地方继续。

或者,如果(例如)有一个 ID 为“buttonId”的button,您想在页面加载时点击它,您可以让 Watir 等待最多 30 秒,直到该按钮被加载并可点击:

browser.button(:id, 'buttonId').when_present.click

我几乎总是使用.wait_until_present.when_present. 来加载每个新页面。一般情况下 30 秒就足够让页面为 Watir 做好准备了,这两种方法都很好用。

另见http://watirwebdriver.com/waiting/

【讨论】:

  • 我完全同意您提供的建议。我正在寻找的是这样的...... .wait_for_page_load() 应该等待完整的页面加载,而不是等待按钮或元素......
  • 我们可以检查页面的就绪状态和状态,以便我可以在它变为 4 & 200.. 时停止等待?这是等待页面加载功能。
  • 我认为无法使用 Watir-Webdriver 检查页面状态。见stackoverflow.com/questions/6509628/…。您可能会调查在 Page Objects gem 中添加。我从未使用过它,但该 gem 可能能够检查页面是否已加载。见github.com/watir/watir-webdriver/wiki/Page-Objects
  • 如果这不起作用,我没有建议,您可能必须按照您在开始时提出的建议编写自己的方法。
猜你喜欢
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 2016-12-25
相关资源
最近更新 更多