Это сводит меня с ума, мне просто нужно, чтобы WebDriver щелкнул правой кнопкой мыши по элементу, и остальная часть моего селена будет работать.
Я использую Eclipse, все мои импорты и библиотеки .jar настроены правильно.
WebDriver driver = new FirefoxDriver();
String baseUrl = "http://............/";
selenium = new WebDriverBackedSelenium(driver, baseUrl);
Гораздо позже в моем коде я щелкаю левой кнопкой мыши внутри строки портлета javascript, которую я хочу выполнить, щелкнув правой кнопкой мыши, без каких-либо проблем.
selenium.click("//tr[@id[contains(.,'Equipment')]]");
Это работает просто отлично, строка, по которой щелкнули, выделяется, как и должно быть.
Теперь мне просто нужно щелкнуть по нему правой кнопкой мыши, но я не могу! Пытающийся:
selenium.contextMenu("//tr[@id[contains(.,'Equipment')]]");
не удается щелкнуть правой кнопкой мыши и возвращает ошибку: java.lang.UnsupportedOperationException: contextMenu.
Существует элемент, который не считается «видимым», пока эта строка не будет нажата правой кнопкой мыши. Он определяется как существующий, но селен не запустит его, если я не щелкну его правой кнопкой мыши в середине запуска в WebDriver, чтобы сделать его видимым. В противном случае это просто дает мне это:
com.thoughtworks.selenium.SeleniumException: элемент в настоящее время не отображается, поэтому с ним нельзя взаимодействовать.
Щелчок правой кнопкой мыши по этой строке делает элемент «видимым», поэтому мне нужно так сильно щелкнуть правой кнопкой мыши по селену. Я проверил, чтобы убедиться, что невидимый элемент определяется как существующий.
boolean exists = selenium.isElementPresent("//a[@id[contains(.,'faction')]]");
boolean visible = selenium.isVisible("//a[@id[contains(.,'faction')]]");
System.out.println("Exists: " + exists);
System.out.print("Visible: " + visible);
Дает мне
Exists: true
Visible: false
Другими словами, это не проблема с моим xpath. Это здесь. Это просто не "видно". Я также пытался отправить Shift + F10 вместо щелчка правой кнопкой мыши, но это не помогло.
Все это отлично работает в Selenium IDE, но мне нужно, чтобы он работал с WebDriver, чтобы я мог возиться с ним в Java. Пожалуйста, помогите мне.
РЕДАКТИРОВАТЬ: Благодаря совету Сланека и большему количеству возни с конструктором действий я обнаружил, что проблема заключается в том, что мой веб-драйвер selenium не обновлен для Firefox 14. Это странно, учитывая, что я думал, что загрузил самый последний только в прошлый четверг. . В любом случае, по-видимому, встроенная поддержка событий для Firefox 14 не была добавлена до веб-драйвера 2.25.0, а я использую 2.24.1.