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

Ale*_*pov 7 testing ruby-on-rails capybara

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

kai*_*ter 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
Run Code Online (Sandbox Code Playgroud)

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

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


MrD*_*anA 1

将其作为对原始问题的评论的答案。

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