我希望点击我的测试应用中显示的弹出消息(如果存在)。我是水豚的新手,似乎找不到办法做到这一点。我之前有过watir的经验,如果我用watir做的话,那就像是:
if browser.link(:text, "name").exists? do
browser.link(:text, "name").click
end
我怎样才能在水豚中做同样的事情?请注意,此链接并不总是出现,因此我希望获得if语句。
答案 0 :(得分:27)
直接代码只是调用has_link?匹配器然后click_link操作:
if page.has_link?('name')
page.click_link('name')
end
但它不是最快的解决方案,因为Capybara会向驱动程序发出两个查询来获取元素:第一个在has_link?
中,第二个在click_link
中。
更好的变体可能是只生成一个查询来获取元素:
# This code doesn't check that an element exists only at one place and just chooses the first one
link = first('name')
link.click if link
或
# This code checks that element exists only at one place
links = all('name')
unless links.empty?
links.count.should == 1
link = links.first
link.click
end
就个人而言,我会选择has_link?
/ click_link
实施,因为第二个变体不会检查该元素是否只存在于一个地方而第三个存在太长。
答案 1 :(得分:6)
如果我使用has_css?
查询:
if page.has_css?("button #popUpButton")
click_button(#popUpButton")
end
答案 2 :(得分:-3)
你有没有尝试过这样的事情:
if page.find('.id') do
click_link('Some Link') # or page.find('.id').click
else
page.should_not have_selector('.id') # or something like that
end