我正在使用Watir-webdriver的页面对象gem。在这里,我使用“populate_page_with”功能,当有一些元素需要加载时,我无法使用它。
在下面的脚本中,我应该输入:sum_ctgy
,:sd
和:foregin
的详细信息,然后我应该等待:sumc
可见。我正在使用populate_page_with data_for方法,在yml文件中使用如下数据
sumdetailspage:
sum_ctgy: Test1
sd: Test2
sumc: 502
sumd: -450
请告诉我使用populate方法解决此问题的更好方法。
class SumDetailsPage
include PageObject
include DataMagic
select_list(:sum_ctgy, :name => /categoryDescription/) --> send details
text_field(:sd, :id => /sumDestination/) --> continue
text_field(:foreign, :name => /foreignSymbol/) --> continue
div(:pw, :id => /PleaseWaitMessage/) --> please wait behavior to complete(until hidden)
text_field(:sumc, :id => /sumCalc/) --> then continue, but it is not waiting for this element to load
text_field(:sumd, :id => /sumCalcdep/)
def train_details(data = {})
DataMagic.load('traindata.yml')
populate_page_with data_for(:sumdetailspage, data)
pw_element.when_not_visible --> wait
populate_page_with data_for(:sumdetailspage, data) --> again continue...
end
end
答案 0 :(得分:3)
我建议为sumc元素提供一个块,以便它总是等待消息消失。这是有益的,因为任何与文本字段的交互将始终等待 - 即,如果您正在设置,获取等等
text_field(:sumc){
pw_element.when_not_visible
text_field_element(:id => /sumCalc/)
}
然后您可以像往常一样使用populate_page_with。
注意:这假设您使用的是Ruby 1.9+,其中维护了哈希的插入顺序 - 即page_populate_with
将输入:sum_ctgy,:sd和:foregin then:sumc(并假设这是顺序你在中指定它们。