如何将 watir 与 children / xpath 一起使用来单击按钮?

How to use watir with children / xpath to click a button?

我想写一个通用代码来点击按钮。

所以我从 div 得到了 class。子元素是按钮。我使用 xpath 访问子元素。:

button = browser.div(class: /sp-m-cookies-container/).element(xpath: './*')

puts button.innertext # OUTPUT: Submit

button.click

即使输出是正确的(它是按钮的 innerText,点击无效。但是,下面的代码有效(按钮不是通用的)。

browser.button(:text => 'Submit').click

我做错了什么?

在我的例子中,名字不是 "submit"。它通常是不同的。只有 class 始终相同。

Chrome: 79.0.3945.130

硒:3.141.0

将第一行更改如下。

button = browser.div(class: /sp-m-cookies-container/).button(xpath: './button').wait_until(timeout: 100, &:present?)

element(xpath: './*') 太笼统了,无论它是否是按钮,都会 return 第一个元素。

如果你觉得普通点击没问题,那么你可以使用fire_event:onclick来触发点击事件,如下所示。

button.fire_event :onclick