Watir命令在页面加载之前执行

时间:2014-02-19 20:38:37

标签: ruby watir

我正在尝试使用命令if (@browser.text_field(:id => textbox).exists?)验证页面上是否存在元素,但该命令甚至在页面加载之前执行,并且它总是转到else语句。我该如何处理?

2 个答案:

答案 0 :(得分:0)

在页面加载完成之前继续Watir通常意味着页面异步加载某些内容。在这种情况下,您需要在页面实际完成加载时告诉Watir。如何执行此操作取决于页面,但一般来说,有2个选项。

异步加载内容时,许多应用程序将显示微调器或进度条。当此元素消失时,页面可被视为“已加载”。因此,如果页面上有这些类型的元素之一,您可以在继续之前等待它消失:

@browser.div(:id => 'spinners_id').wait_while_present
if @browser.text_field(:id => textbox).exists?
    # Do stuff
else
  # Do other stuff
end

或者,页面上可能有一个您知道最后加载的元素。在这种情况下,您可以等到该元素出现:

@browser.div(:id => 'some_last_element').wait_until_present
if @browser.text_field(:id => textbox).exists?
    # Do stuff
else
  # Do other stuff
end

答案 1 :(得分:-1)

@ browser.text_field(:id,textbox).when_present.set“Welcome”

这将帮助您减少不必要的等待检查代码并使代码更具可读性。