Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Помогите пожалуйста решить проблему с doubleClick на Selenium+Java

selenium
webdriver
java
Теги: #<Tag:0x00007f7b704528e0> #<Tag:0x00007f7b70452728> #<Tag:0x00007f7b704524f8>

(Kuanysh Bekturganov) #1

Всем доброго времени суток! Помогите решить проблему с doubleClick.
Реализовал метод который открывает заметку на редактирование:

public NoteDialogBox editNote(String text) {
        WebElement element = driver.findWaitElement(".//span[text()='" + text + "']");
        driver.waitElementToBeClickable(".//span[text()='" + text + "']");
        new Actions(driver.getWebDriver()).doubleClick(element).build().perform();
        log.info("Редактировать заметку [" + text + "]");
        return new NoteDialogBox(driver);
    }

Но почему-то данный метод кликает один раз, в чем проблема? Причем это в selenium-firefox-driver:2.48.0 и выше, а если ниже то есть 2.46.0 без проблем делает doubleClick.

А также если сделать:

 new Actions(driver.getWebDriver()).doubleClick(element).click().build().perform();

То тоже делает doubleClick(точнее doubleClick + click). В чем проблема подскажите пожалуйста!


(Nik Sidorenko) #2

А попробуйте просто
new Actions(driver.getWebDriver()).doubleClick(element).perform(); // без build()

Также убедитесь, что в момент, когда Вы кликаете, элемент кликабельный/активный/доступный


(Kuanysh Bekturganov) #3

Без build() тоже пытался не помогло, перед кликом добавил метод который ждет кликабельности элемента:

driver.waitElementToBeClickable(".//span[text()='" + text + "']");```
``
Все же он делает не double клик, а одинарный клик.

(Nik Sidorenko) #4

Есть возможность достучатся до тестируемого приложения из вне, чтобы подебажить и разобраться с проблемой?


(Kuanysh Bekturganov) #5

Благодарю за помощь, данный момент из вне нет возможности достучатся, начал этим заниматься, в ближайшее время будет возможности поюзать.
И еще раз спасибо!


(Roma Marinsky) #6

Ну то в чём проблема не совсем ясно, но первое что бросается в глаза это то, что вы после используете build и perform
Если вы заглянете в perform то увидите что он реализует build().perform(); т.е. вы дублируете build - а с этим уже бывают проблемы при построении комплексного Action


(Jane Tymoschuk) #7

попробуйте еще конструкцию

((HasInputDevices) driver).getMouse().doubleClick(((Locatable) webElement).getCoordinates());