Tra*_*ash 11 automated-tests cucumber capybara
我喜欢保持干燥,这就是为什么我希望在我的一个步骤中有以下内容:
if first(:css, "#blabla") != nil
find_by_id(blabla).click
end
find_by_id(....)
....
Run Code Online (Sandbox Code Playgroud)
这意味着,它将查找某个元素,如果存在,它将单击它.如果没有,我也不会浪费时间(我的默认等待时间为20秒,如果我把将要使用的find ,而不是first在那里.
主要问题是我不想在这种情况下检查某个元素时浪费时间,但我也想知道这是否是一个好方法.
And*_*lov 20
我看到你的代码对浏览器做了不必要的第二次查询的问题(你已经first(:css, "#blabla")没有必要这么做了find_by_id(blabla))
我建议你使用一个查询找到元素:
el = first('#blabla')
el.click unless el.nil?
Run Code Online (Sandbox Code Playgroud)
请注意,这里没有丢失时间,因为first没有阻止.
但是,first不检查页面上是否没有其他元素.您可以添加:maximum以检查它:
el = first('#blabla', maximum: 1)
el.click unless el.nil?
Run Code Online (Sandbox Code Playgroud)