当前位置: 首页 > 面试题库 >

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

景永望
2023-03-14
问题内容

我的页面上有一个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中运行良好)


问题答案:

运动

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的结合确实可以。我有测试套件失败的原因仅在于本地事件不可用。



 类似资料:
  • 问题内容: 将click事件处理程序添加到canvas元素(将返回click的x和y坐标)(相对于canvas元素)的最简单方法是什么? 不需要旧版浏览器兼容性,Safari,Opera和Firefox都可以。 问题答案: 这个答案很老了,它使用检查不再需要的旧浏览器,因为和属性在所有当前浏览器中都有效。您可能想查看PatriquesAnswer,以获得更简单,最新的解决方案。 最初的答案: 正如

  • 问题内容: 我有一个名字来自Excel工作表 具有此特定名称的元素列表,我需要单击此元素,这是我的代码: 这是我的html代码: 这个名称从excel表格中以’Motiva’的形式出现。 谁能帮我解决这个问题? 问题答案: 事情就这样了:假设您的myElements将如下所示:

  • 问题内容: 作为我对登录功能的Selenium测试的一部分,我想通过识别按钮的坐标并指示Selenium单击这些坐标来单击按钮。无需标识元素本身即可完成此操作(通过id,xpath等)。 我知道还有其他更有效的方式来运行click命令,但是我希望专门使用这种方法来最好地匹配用户体验。谢谢。 问题答案: 硒不会让你这样做。

  • 问题内容: 我的html元素具有以下事件处理程序 单击时,我需要在#seek-bar上找到鼠标的位置。我以为上面的代码应该可以工作,但是结果不正确 问题答案: 您是否要简单地将鼠标指针定位到元素(或)的位置, 编辑: 1),给你鼠标位置的相关文件! 2):给出元素的偏移位置 3):它为您提供元素的相对位置,即 考虑一个元素嵌入另一个元素内 例如 : HTML JavaScript

  • 问题内容: 浏览器:Chrome V65 ChromeDriver:chromedriver.exe 2.37 网络驱动程序尝试单击元素时发生错误。以下是我的click(): 我已经等待元素可见,然后单击。但是引发异常,说“其他元素将获得点击”,如下所示: 即使我添加语句以等待ajax加载完成以单击元素,也会发生错误: 这种情况在Chrome上经常发生,可能是5次出现4次故障。没用! 现在,我必须

  • 我们体验一下Events类吧!为了使其尽量简单,我们使用Events类的getMousePos()获取鼠标光标的坐标,并在画布的左上角显示出来。getMousePos()方法返回相对于画布的坐标,它会考虑画布相对于页面的偏移,以及页面的滚动位置。 图6-1 画布坐标系 操作步骤 按照以下步骤,在每次鼠标移动时,获取画布上的鼠标坐标,并在画布的左上角显示出来: 1. 链接到Events类: <sc