java - 如何使用机器人类在 Selenium 中基于 webelement 而不是 getlocation 的 xy 坐标执行 mousemove?

标签 java selenium selenium-webdriver mouseevent mousemove

问题陈述:如何使用机器人类在 Selenium 中基于 webelement 而不是 getlocation 的 xy 坐标执行 mousemove?

下面的代码片段通常用于 mousemove,它根据 x-y 坐标移动鼠标

 Robot robot = new Robot();
 robot.mouseMove(to_x, to_y); 

但是,有没有一种方法可以在不使用 getlocation 的情况下基于 webelement 移动机器人类的鼠标

Example:
    webelement drag = driver.findelement(by_xpath('xpaht'))
    Robot robot = new Robot();
    robot.mouseMove(drag); //Is there any way to do it like this in selenium java

我不想使用 actions 类的 movetoelement。

Selenium 3.141/Java Chromedriver 76 和 FF 浏览器

最佳答案

您可以使用 Locatable 类 -

Locatable hoverItem = (Locatable) driver.findElement(By.xpath("element xpath"));enter code here
int y = hoverItem.getCoordinates().getLocationOnScreen().getY();
((JavascriptExecutor)driver).executeScript("window.scrollBy(0,"+y+");");

希望这有帮助。

关于java - 如何使用机器人类在 Selenium 中基于 webelement 而不是 getlocation 的 xy 坐标执行 mousemove?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58766575/

相关文章:

java - 无法将 WebElement 转换为 org.openqa.selenium.internal.Locatable

java - 请求参数在我的servlet中被修改

java - 服务器的 Bounce 和 BootUp 有什么区别?

java - 如何通过Selenium阻止chrome中的弹出窗口

java - 如何检索 selenium webdriver 中的动态值

python - 使用 Python 在 ESPN 的选秀前策略中重新排序球员

Java-为什么 Selenium Chrome Webdriver 使用我的真实 IP 地址而不是代理

java - 将 QuickAccess TextField 添加到 eclipse RCP 应用程序

java - 在 Jetty 中运行 servlet 时获取 HTTP 500

selenium - Protractor 的日志