Подтвердить что ты не робот

Действия Класс, не работающий с драйвером gecko

У меня проблема с драйвером класса Actions. У меня есть этот фрагмент кода

Actions act= new Actions(d1);
act.moveToElement(d1.findElement(By.xpath("path of the element")).build().perform();

Раньше, когда я использую Selenium-Java 2.43.0, эта команда работает нормально. Но я обновился до 3.0.0-beta2, начал доступ к firefox driver через драйвер gecko.

В приведенной выше команде мой тест терпит неудачу. Получаю следующее исключение

org.openqa.selenium.UsupportedCommandException: POST /session/ 21dfc828-a382-4622-8c61-89bc48e29744/moveto не соответствует (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой стека информация) Продолжительность или таймаут команды: 4 миллисекунды

Пожалуйста, помогите

4b9b3361

Ответ 1

Временный, ужасный, удручающий ответ, пока он не исправит это, вернется к рабочим версиям Selenium и Firefox. Selenium 2.53.0 с Firefox 45.0.2 все еще работает: https://ftp.mozilla.org/pub/firefox/releases/45.0.2/

Я сожалею о том, что не тестирую последнюю версию, но в то же время это не значит, что никаких тестов Firefox не запускается вообще. Не работает против Firefox в течение нескольких месяцев подряд неприемлемо.

Ответ 2

Это проблема с версией. Selenium 3 еще не имеет поддержки для драйвера класса Action. Вам нужно будет загрузиться в более низкую версию. Версия 2.53.1 отлично работает для меня с Firefox

Ответ 3

Ниже для меня работает Firefox 52.3.0 ESR и Selenium 3.5.1

public void mouseRightClickAndSelectOption(By locator, By contextMenuOption){
    clickElement(locator);
    String script = "var evt = document.createEvent('MouseEvents');" + "evt.initMouseEvent('contextmenu',true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0,null);" + "arguments[0].dispatchEvent(evt);";

    try {
        ((JavascriptExecutor) driver).executeScript(script, getElement(locator));
    } catch (Exception ignored) {
    }
    clickElement(contextMenuOption);
}


public WebElement getElement(By locator) {
    fluentWait(locator);
    return driver.findElement(locator);
}