Действия Класс, не работающий с драйвером 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 миллисекунды
Пожалуйста, помогите
Ответы
Ответ 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);
}