首页 > 解决方案 > 如何使用 selenium Web 驱动程序移动可见的鼠标指针?

问题描述

我是 Selenium 的新手。我正在使用gridlastic作为测试环境。

我已经完成了 selenium 的 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,因为测试环境是 gridlastic 并且它不适合它。

我也尝试使用 javascript 执行器,但它不可能,因为鼠标光标是由操作系统控制的。我想改变窗口对象 clientX 和 clientY 的值,但根据文档,这些是只读的。

标签: seleniumautomated-testsselenium-grid

解决方案


这看起来很奇怪,但如果你尝试下面的代码,你会看到,你没有看到移动的鼠标指针:

    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 表达式对我来说是不可见的。在单击之前,您会注意到购物车图标的鼠标悬停效果。


推荐阅读