node.trigger("click") - 水豚

node.trigger("click") - Capybara

我有一个元素,我想在 node.trigger("click") 上使用它,但我不确定如何找到该元素。这是一个 link_to 并且我对集成测试比较陌生 os 我正在尝试找到这个问题的答案。

这是元素

<%= link_to '✚ Invite Another Team Member', "#email", data: { invitation_modal_add: "" } %>

这是我想更改的测试。

click_link "✚ Invite Another Team Member"

我想用这样的东西替换它

link.trigger("click") 

因为这就是水豚告诉我现在要尝试的,因为我收到了这个错误

 Capybara::Poltergeist::MouseEventFailed:
   Firing a click at co-ordinates [0, 0] failed. Poltergeist detected another element with CSS selector 'html.no-mobile.wf-loading.js.touch-events body.accounts.users.index div.jquery-modal.blocker' at this position. It may be overlapping the element you are trying to interact with. If you don't care about overlapping elements, try using node.trigger('click'). 

找到你可以做的元素

link = find(:link, "✚ Invite Another Team Member")

然而,在您开始使用触发器之前,您应该阅读之前的错误消息部分 - "if you don't care about overlapping elements"。如果您实际上正在测试您的应用程序,您可能确实关心重叠元素,因为它们可以阻止您的用户实际能够点击 link,并且它试图点击 0 处的 link ,0 可能表示您的页面布局存在问题。您可能应该尝试设置更大的 window 大小(注册驱动程序时的 window_size 选项 - https://github.com/teampoltergeist/poltergeist#customization),这样 link 就不会重叠,确保 link在某种程度上不完全 hidden/collapsed,或者使用 execute_script 和 JS 来滚动页面,使元素变得可交互。如果你真的不关心用户是否真的能够点击 link 然后随意使用 #trigger