等待文本出现时

时间:2016-09-01 07:48:09

标签: ruby cucumber watir page-object-gem

我想等待所需的文字出现。 我用:

@browser.text('required text').when_present

我收到错误:

ArgumentError: wrong number of arguments (given 1, expected 0)

如何实施?我不想只等待文本而不依赖于html元素。

5 个答案:

答案 0 :(得分:2)

使用页面对象gem而不依赖于html元素:

@page.wait_until { @page.text.include? 'required text' }

Reference

答案 1 :(得分:0)

正确的语法是@browser.text.include?('required text') 这应该可以帮助你摆脱错误。

答案 2 :(得分:0)

更好的是你可以这样做:

Watir::Wait.until(10) { @browser.text.include?('required text') }

如果未设置,则默认值为60秒,在上例中设置为10秒。

Reference

答案 3 :(得分:0)

不是为整个页面查找文本,而是为文本创建元素可能更有效。

span(:ur_name,:text => / partial string /)

或者您更喜欢定义它,然后为对象调用element level wait functions。当然,如果文本是动态的,你也可以动态地声明元素。

span(:ur_name,:text =>"#{variable_containing_text}")

page.ur_name_element.when_present

这样做的一个微不足道的好处是确保您的文本不会显示不合适,特别是如果可能的话。如果元素不支持文本定位器,​​您仍然可以识别元素,检查文本然后使用元素等待。

答案 4 :(得分:0)

wait_until

根据 the latest docs,使用 .wait_until( &:present? )

@browser.text( "required text" ).wait_until( &:present? )