背景:这是使用page-object和Rspec。页面,对象设置正确。基本上发生的事情是它跳过while语句并直接检查页面上存在的变量label
。
它应该做的是检查label
变量是否在页面上,如果没有,则等待20秒并刷新页面,然后再次检查最多30次,如果它在第30次失败,那么它应该一起失败。如果找到它,那么它应该再次检查并传递它。
def check_label(label, current_page)
labels_filter_element.click
check_label_sla(label, current_page)
current_page.text.should include label
end
def check_label_sla(label, current_page)
t = 30
i = 0
while i < t
if current_page.text.should include label
return
else
sleep(20)
current_page.refresh
i += 1
end
end
end
我认为发生的事情是current_page.text.should include label
总是返回TRUE,但我不确定。如果需要更多信息,请告诉我。
答案 0 :(得分:1)
我做出以下假设:
label
是一个字符串鉴于这些假设,问题在于if语句:
if current_page.text.should include label
执行if语句时,它会断言该页面包含标签:
check_label
中的断言将通过)。 check_label_sla
方法中失败,而不是在check_label method
的末尾(这使得看起来像while循环不起作用)。您希望if语句检查文本是否包含在内,而不进行断言。因此,你想要:
if current_page.text.include? label
因此,您的check_label_sla
方法将成为:
def check_label_sla(label, current_page)
t = 30
i = 0
while i < t
if current_page.text.include? label
return
else
sleep(20)
current_page.refresh
i += 1
end
end
end
或者你可以把它减少到:
def check_label_sla(label, current_page)
30.times do
return if current_page.text.include? label
sleep(20)
current_page.refresh
end
end