我希望单击出现在我的测试应用程序上的弹出消息(如果存在)。我是水豚的新手,似乎找不到办法做到这一点。我以前有使用 watir 的经验,如果我使用 watir 进行操作,它会是这样的:
if browser.link(:text, "name").exists? do
browser.link(:text, "name").click
end
我怎样才能在水豚中做同样的事情?请注意,此链接不会总是出现,因此我希望使用 if 语句。
我希望单击出现在我的测试应用程序上的弹出消息(如果存在)。我是水豚的新手,似乎找不到办法做到这一点。我以前有使用 watir 的经验,如果我使用 watir 进行操作,它会是这样的:
if browser.link(:text, "name").exists? do
browser.link(:text, "name").click
end
我怎样才能在水豚中做同样的事情?请注意,此链接不会总是出现,因此我希望使用 if 语句。
直接的代码是调用has_link?matcher 然后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
实现,因为第二个变体不会检查元素仅存在于一个地方,而第三个变体太长。
如果我使用has_css?
查询:
if page.has_css?("button #popUpButton")
click_button(#popUpButton")
end
您可以先使用,带选项minimum: 0
item = first ".dropdown-item", minimum: 0
item.click if item&.visible?
您是否尝试过执行以下操作:
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