Как переместить видимый указатель мыши с помощью веб-драйвера selenium? - PullRequest
0 голосов
/ 08 февраля 2019

Я новичок в Selenium.Я использую gridlastic в качестве тестовой среды.

Я прошел через класс Actions для селена, который имеет методы для перемещения мыши, а также получил экземпляр мыши через веб-драйвер, вызвав getMouse () ипопытался переместить мышь, но удалась.

@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).Может кто-нибудь помочь, как это сделать.

enter image description here Пожалуйста, не предлагайте использовать класс роботов из JAVA, поскольку среда тестирования является решетчатой, и она не работает.

Я также пытался использоватьисполнитель javascript, но это невозможно, так как курсор мыши управляется операционной системой.Я думал об изменении значений объекта окна clientX и clientY, но они доступны только для чтения в соответствии с документацией.

1 Ответ

0 голосов
/ 08 февраля 2019

Это кажется очень странным, но если вы попробуете следующий код, вы увидите, что не видите движущегося указателя мыши:

    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 не было видно для меня.Вы заметите эффект наведения мыши на иконке корзины перед щелчком.

...