我是Selenium的新手。 我正在使用gridlastic作为测试环境。
我经历了硒类的Actions类,该类具有移动鼠标的方法,并且通过调用getMouse()通过Web驱动程序获取了鼠标实例,并尝试移动鼠标但没有成功。
@Test(enabled = true)
public void test_site() throws Exception {
Coordinates elementLocation = null;
driver.get("https://www.amazon.com");
Mouse mouse = ((HasInputDevices) driver).getMouse();
System.out.println(mouse.toString());
if(mouse==null) {
System.out.println("mouse is null");
}
WebElement element1=driver.findElementByXPath("//*[@id=\"a-autoid-0-announce\"]");
elementLocation = ((Locatable) element1).getCoordinates();
mouse.mouseMove(elementLocation);
Thread.sleep(5000); //slow down for demo purposes
}
也尝试使用动作类
@Test(enabled = true)
public void test_site() throws Exception {
driver.get("https://www.google.com/ncr");
Actions builder = new Actions(driver);
builder.
moveByOffset( 100, 1 )
.build().perform();
Thread.sleep(10000); //slow down for demo purposes
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("webdriver");
element.submit();
Thread.sleep(5000); //slow down for demo purposes
}
仍然成功,鼠标指针始终保持在位置(0,0)。任何人都可以帮忙。
请不要建议使用JAVA中的Robot Class,因为测试环境是网格弹性的,并且不适用于该环境。
我也尝试使用javascript执行程序,但由于鼠标光标受操作系统控制,因此无法执行。我考虑过更改窗口对象clientX和clientY的值,但是根据文档,它们是只读的。
答案 0 :(得分:1)
这似乎很奇怪,但是如果尝试下面的代码,您将看到看不到移动的鼠标指针:
PointerInput p = new PointerInput(PointerInput.Kind.MOUSE, "MyMouse");
Interaction i = p.createPointerMove(Duration.ofSeconds(2), PointerInput.Origin.fromElement(element1), 5, 5);
Actions builder = new Actions(driver);
Action mouseOverHome = builder
.tick(i).click()
.build();
mouseOverHome.perform();
我添加了单击以演示效果。我不得不使用//*[@id=\"nav-cart\"]
上的购物车。您的xpath表达式对我不可见。单击之前,您会注意到购物车图标的鼠标悬停效果。
答案 1 :(得分:0)
您可以使用AutoIT控制鼠标点。您需要从Selenium运行时环境中启动AutoIT脚本(看起来像您在使用Java) 这是调用您的AutoIT脚本的代码:
//Some arbitrary example Selenium code...
driver.findElement(By.id("input_4")).click();
// below line execute the AutoIT script .
Runtime.getRuntime().exec("E:\\AutoIT\\FileUpload.exe");
由于Gaurav Nigam,我从guru99.com找到了这个示例。这是链接How to use AutoIT with Selenium Webdriver: File Upload Example
在您的AutoIT脚本中,您需要一些“鼠标移动”命令:
MouseMove(10, 100) ; Move the mouse cursor to the x, y position of 10, 100.