【发布时间】:2015-09-22 14:20:14
【问题描述】:
我正在开发自动化项目,以使用 Selenium webdriver 和 Java 来自动化 Web 应用程序测试。但是,我们无法将鼠标指针移动到页面上所需的位置 (x,y)。我们已经使用 Actions 类来实现这一点,但是这个类不会将鼠标指针移动到位置上,它只是移动鼠标的焦点,我们需要将鼠标悬停在元素上才能打开工具提示。我们尝试过使用其他框架 SIKULI,它适用于图像,效果很好,但它不会针对页面上的每个元素/图像,它会选择与之匹配的随机图像。
但是,我们在网页上有多个点的图形,该图形具有工具提示,仅当鼠标物理悬停在元素上时才会打开。现在,我们遇到了新的想法,即获取元素在页面上的位置 (x,y) 并使用 Robot 类将鼠标移动到所需的位置,但是当我们传递元素的 (x,y) 位置时页面,它将鼠标移动到屏幕上的其他位置,原因是机器人类将采用屏幕分辨率并根据 (x,y) 位置移动鼠标。
我们是否可以根据桌面屏幕尺寸务实地找到确切位置,例如网页尺寸是(3081,5172),基于网页元素位置是(723,415),现在屏幕尺寸时元素在屏幕上的位置是多少是(1920,1080)?
下面是我正在使用的代码。
Robot robot=new Robot();
Actions action = new Actions(driver);
action.moveToElement(ele).click().build().perform();
robot.mouseMove(ele.getLocation().getX(), ele.getLocation().getY());
注意:action.moveToElement 方法不会将鼠标指针物理移动到所需元素上,robot.mouseMove 方法会在桌面屏幕上移动鼠标,导致输出不正确。
您的意见将不胜感激
【问题讨论】:
-
到目前为止你有没有尝试过?如果是这样,请编辑您的问题并包含一些 sn-ps。这将极大地帮助人们回答您的问题!阅读有关how to ask a great question 的更多信息。
-
不能 Selenium 给你 html 元素的屏幕位置吗?
-
@Antoniossss,我们从 selenium 获取 html 元素的位置,但是当我们将值传递给机器人类时,它会根据桌面屏幕大小而不是页面大小来计算 x,y 位置...
-
你的意思是位置是相对于浏览器而不是相对于屏幕的?\
标签: java algorithm design-patterns selenium-webdriver discrete-mathematics