如果一个元素是可点击的,如何在Capybara中测试?

时间:2014-02-19 16:57:08

标签: ruby-on-rails testing capybara

如果在页面上输入文本框可见且可点击,我需要在Capybara中进行测试。我知道如何测试可见性,但我找不到像.clickable这样的方法或者那种精神的东西。如何在Capybara做到这一点?

3 个答案:

答案 0 :(得分:7)

听起来OP的需求已经得到满足,但是对于未来的探索者来说,这里有一些工具可以判断某些东西是否可点击。

测试是否可以点击该物品(Rspec&& Capybara):

it "is clickable" do
  expect{ find('.your_selector').click }
    .not_to raise_error(Capybara::Poltergeist::MouseEventFailed)
end
it "isn't clickable" do
  expect{ find('.your_selector').click }
    .to raise_error(Capybara::Poltergeist::MouseEventFailed)
end

如果可能,请点击它,如果没有,请按照Joe Susnick的回答做其他事情:

clickable = expect{ find('.your_selector').click }.not_to raise_error(Capybara::Poltergeist::MouseEventFailed)
if clickable
  plan_a
else
  plan_b
end

答案 1 :(得分:1)

将此作为答案,来自对原始问题的评论。

您不需要测试可点击性(即在点击时让输入字段闪烁),因为我认为这取决于浏览器。您无需执行任何操作即可获得该功能。因此,如果它是可见的,并且输入字段,则单击它将获得该结果。否则,如果它不可见,则无论如何都无法点击,所以你没事。我认为您不需要测试任何有关可点击性的信息,只需要查看可见性。

答案 2 :(得分:1)

元素可以“可见”而不可点击。我现在正在努力寻找一种解决方法,用于选择一个不透明停留背后的按钮。我希望能说出类似的话:

if find_button("Change Location").visible?
  click it
else
  something else
end

我还没有找到答案,这不是一个hacky解决方法所以任何建议都会有所帮助。而不是解雇问题