用硒在水豚中可靠的点击功能

Reliable click function in capybara with selenium

有时 .click capybara 函数不会触发,也不会失败,因为它假定它已触发。所以我环顾四周,发现 .trigger("click") 更可靠,但也有一些缺点。

But I read the github for the trigger() function and it says it doesn't work in selenium.

selenium 中 capybara/ruby 是否有可靠点击的替代函数?

例如:

find(el).click

find(el).trigger("click")

不,在带有 selenium 的 Capybara 中没有替代的点击功能(除了可能通过 execute_script 执行 JS)。不太可能点击没有触发,更有可能是在 "wrong" 位置触发,原因是页面上的动画导致点击的计算位置在点击实际发生时已过时.在那种情况下,在测试期间禁用动画通常会有所帮助。如果这不是错误的位置问题,并且您可以创建一个展示该行为的示例,将其报告给 geckodriver 或 chromedriver,他们通常会很快修复它(只要您提供一个复制它的示例)。

有时,您尝试单击的元素被隐藏或重叠,在这些情况下您必须使用-

find(el).trigger("click", visible: false)

希望对您有所帮助。