硒网络驱动程序移动鼠标到点

2022-09-03 00:33:10

我目前正在尝试将光标移动到一个点(),该点是通过检查实时图表上某个标记的出现次数来设置的,从中我无法获得任何详细信息,但可以找到X和Y坐标。org.openqa.selenium.Point

如何移动到鼠标上以将鼠标悬停在所述点上以打开底层JavaScript菜单?

当前代码

//finds marker on the current web page

Point image = page.findImage("C:\\Pictures\\marker.png") ;

//move mouse to this x,y location 

driver.getMouse().mouseMove((Coordinates) image);

这不起作用,因为无法强制转换为 。Pointorg.openqa.selenium.interactions.internal.Coordinates


答案 1

为什么使用java.awt.Robotorg.openqa.selenium.interactions.Actions.class可能会正常工作?只是说。

Actions builder = new Actions(driver);

builder.keyDown(Keys.CONTROL)
   .click(someElement)
   .moveByOffset( 10, 25 );
   .click(someOtherElement)
   .keyUp(Keys.CONTROL).build().perform();

答案 2

恕我直言,你应该注意机器人.class

但是,如果要物理移动鼠标指针,则需要使用Robot类采取不同的方法。

  Point coordinates = driver.findElement(By.id("ctl00_portalmaster_txtUserName")).getLocation();
  Robot robot = new Robot();
  robot.mouseMove(coordinates.getX(),coordinates.getY()+120);

Webdriver提供文档坐标,其中Robot类基于屏幕坐标,因此我添加了+120来补偿浏览器标头。
屏幕坐标:这些是从用户计算机屏幕的左上角测量的坐标。您很少会获得坐标 (0,0),因为这通常在浏览器窗口之外。您唯一需要这些坐标的时间是,如果您想要将新创建的浏览器窗口定位在用户单击的位置。在所有浏览器中,这些浏览器都在event.screenXevent.screenY中。
窗口坐标:这些是从浏览器内容区域的左上角测量的坐标。如果窗口是垂直或水平滚动的,则与文档的左上角不同。这很少是你想要的。在所有浏览器中,它们都在 event.clientX 和 event.clientY 中。
文档坐标:这些是从 HTML 文档的左上角测量的坐标。这些是您最常需要的坐标,因为这是定义文档的坐标系。

您可以在此处获取更多详细信息

希望这对您有所帮助。


推荐