将值放在文本字段中会加载整个页面,那么是否有任何等待页面加载的函数?

时间:2017-02-11 18:19:54

标签: watir

将值放在文本字段中会加载整个页面,那么是否有任何等待页面加载的函数?

我正在自动化某种text_field,当我将值放在

b.text_field(:id,'something').set 'hi'

它刷新整个页面或重新加载页面,但上面的代码只等到元素存在并将值放在文本字段中,但它不会处理之后发生的事情。

我可以编写任何函数,如下所示,

b.text_field(:id,'something').set 'hi'

b.waitForPageToLoad # Code like this?

还是有任何功能来检查页面是否完全加载?

我也把这个问题放在了watir-general中,但我没有找到答复,所以我写在这里。

1 个答案:

答案 0 :(得分:1)

通过动态网站实施,“页面已完成加载”这一短语并不具有任何意义。 最好的做法是等待下一步与之交互的事情。 Watir 6使这更加自动化,但仍然需要一些额外的逻辑来完成你需要的东西。

由于已提供的详细信息不再有意义,因此以下是一些可能有用的通用原则。

Watir&一旦检测到它已经开始重新加载,Selenium将自动等待页面完成重新加载。

如果您对该元素采取措施,Watir将自动等待元素处于与其交互的状态。

Element#setElement.clearElement.send_keys

的组合

如果页面上的javascript在元素是或不是活动元素时执行操作,则可能需要在向其发送文本之前或之后单击该元素。

可以发送symbols representing keys,例如browser.text_field(name: 'first').set "foo", :tab

如果您需要知道页面已刷新以继续测试,您可以创建一个存储元素定位器的变量,然后对该元素变量执行操作(实际上会查找该元素) ),然后等待那个元素像这样陈旧:

element = browser.text_field(name: 'first')
element.set "foo"
# do something that causes the page to be refreshed
element.wait_until(&:stale?)

希望这些与您的关注相关的事情的组合将帮助您找到解决问题的方法。