如何将 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
我想写一个通用代码来点击按钮。
所以我从 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