一尘不染

如何通过其坐标单击画布中的特定元素(使用WebDriver)?

selenium

我的页面上有一个canvas元素,我想单击此画布中的特定(x,y)坐标。我使用watir-webdriver:

element = browser.driver.find_element(:id, 'canvas')
browser.driver.action.move_to(element).move_by(x, y).click().perform

但是此代码仅单击画布的中心,而不单击指定的(x,y)坐标。怎么了

UPD:所以现在我使用以下代码:

element = browser.driver.find_element(:id, 'canvas')
browser.driver.action.move_to(element, x, y).perform
browser.driver.click.perform

但是它仍然单击画布的中心,而不单击指定的(x,y)坐标…有什么想法吗?

UPD 2:这仅是FIREFOX问题(在Chrome中运行良好)


阅读 320

收藏
2020-06-26

共1个答案

一尘不染

运动

move_to(element)移动到指定元素的中心,并且move_by是相对移动。因此,在这两个操作结束时,您已移至坐标(x of element center + x, y of element center + y)

您应该使用move_to(element, x, y)。这将移动到x, y相对于元素原点的坐标。

相关文件

火狐浏览器

您是否正在使用Selenium和Firefox的Selenium支持本机事件的版本?Selenium 2.37与Firefox
24的结合确实可以。我有测试套件失败的原因仅在于本地事件不可用。

2020-06-26