Watir #when_present不一致的超时问题

时间:2016-05-13 13:06:12

标签: rspec automation watir-webdriver

我正在使用Rspec和Watir-webdriver进行一些自动化 - 目前我有两种不同的方法使用这样的通用代码

# The snippet shown is meant to find a specific div, and when an element within it is present, then perform the click action
search_modal = @browser.div(:class, 'asset-search')
search_modal.when_present do
    search_modal.div(:class, 'quick-search').click
end

我为一个方法运行它,它运行正常,没有错误。我在第二种方法上运行它,它会在30秒后超时。快进到今天早上,第二种方法现在正常运行。
同样,这是在两种不同方法中使用的相同代码。使用#wait方法有一些潜在的问题吗?如果这些都是脆弱或挑剔的,那么有更好的方法来编码吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我怀疑你的部分问题可能是你创建的变量在创建后基本上是静态的。所以它将是一个div对象,然后传递当前的测试,或者一个null对象,它会在出现之前超时。 (除非我很困惑)

试试这个,看看它是否有效。

@browser.div(:class, 'asset-search').div(:class, 'quick-search').when_present.click

如果出现错误,则可能需要分两个阶段进行

@browser.div(:class, 'asset-search').wait_until_present
@browser.div(:class, 'asset-search').div(:class, 'quick-search').when_present.click

或者,如果只有一个div的单个实例与快速搜索类(因此您不需要限制浏览器在资产搜索div中查找它),那么您可以

@browser.div(:class, 'quick-search').when_present.click