Как выполнить функцию mouseover в Selenium WebDriver с помощью Java?

Я хочу сделать функцию мыши над раскрывающимся меню. Когда мы наводим курсор на меню, он отобразит новые параметры. Я попытался щелкнуть новые параметры, используя xpath. Но не можете напрямую щелкнуть меню. Итак, в качестве ручного способа я пытаюсь навести курсор на раскрывающееся меню, а затем нажимает новые параметры.

Actions action = new Actions(webdriver); WebElement we = webdriver.findElement(By.xpath("//html/body/div[13]/ul/li[4]/a")); action.moveToElement(we).build().perform(); 

Невозможно выполнить действие «наведите курсор мыши», вместо этого вам нужно связать все действия, которые вы хотите добиться за один раз. Итак, перейдите к элементу, который отображает другие, затем в той же цепочке перейдите к открытому элементу и нажмите на него.

При использовании Action Chains вы должны помнить, что «делайте это, как пользователь».

 Actions action = new Actions(webdriver); WebElement we = webdriver.findElement(By.xpath("html/body/div[13]/ul/li[4]/a")); action.moveToElement(we).moveToElement(webdriver.findElement(By.xpath("/expression-here"))).click().build().perform(); 

Ни один из этих ответов не работает при попытке сделать следующее:

  1. Наведите указатель мыши на элемент меню.
  2. Найдите скрытый элемент, который ТОЛЬКО доступен после зависания.
  3. Щелкните элемент подменю.

Если вы введете команду «выполнить» после MoveToElement, она перемещается к элементу, и элемент подменю отображается в течение короткого периода времени, но это не зависание. Скрытый элемент немедленно исчезает, прежде чем он может быть найден, что приведет к исключению ElementNotFoundException. Я попробовал две вещи:

 Actions builder = new Actions(driver); builder.moveToElement(hoverElement).perform(); builder.moveToElement(clickElement).click().perform(); 

Это не сработало для меня. Следующие работали для меня:

 Actions builder = new Actions(driver); builder.moveToElement(hoverElement).perform(); By locator = By.id("clickElementID"); driver.click(locator); 

Используя действия для наведения и стандартный клик WebDriver, я могу навести курсор, а затем щелкнуть.

Основываясь на этом сообщении в блоге, я смог вызвать зависание, используя следующий код с Selenium 2 Webdriver:

 String javaScript = "var evObj = document.createEvent('MouseEvents');" + "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" + "arguments[0].dispatchEvent(evObj);"; ((JavascriptExecutor)driver).executeScript(javaScript, webElement); 

Этот код работает отлично:

  Actions builder = new Actions(driver); WebElement element = driver.findElement(By.linkText("Put your text here")); builder.moveToElement(element).build().perform(); 

После нажатия мыши вы можете продолжить выполнение следующего действия по обнаруженной информации

Я нашел этот вопрос, ища способ сделать то же самое для своих тестов Javascript, используя Protractor (интерфейс javascript для Selenium.)

Мое решение с protractorом 1.2.0 и webdriver 2.1:

  browser.actions() .mouseMove( element(by.css('.material-dialog-container')) ) .click() .perform(); 

Это также принимает смещение (я использую его для щелчка выше и слева от элемента 🙂

  browser.actions() .mouseMove( element(by.css('.material-dialog-container')) , -20, -20 // pixel offset from top left ) .click() .perform(); 

Пример программы для наведения мыши с помощью Selenium java WebDriver:

 public class Mhover { public static void main(String[] args){ WebDriver driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.get("http://www.google.com"); WebElement ele = driver.findElement(By.id("gbqfba")); Actions action = new Actions(driver); action.moveToElement(ele).build().perform(); } } 

Проверьте этот пример, как мы могли бы это реализовать.

введите описание изображения здесь

 public class HoverableDropdownTest { private WebDriver driver; private Actions action; Consumer < By > hover = (By by) - > { action.moveToElement(driver.findElement(by)) .perform(); }; @Test public void hoverTest() { driver.get("https://www.bootply.com/render/6FC76YQ4Nh"); hover.accept(By.linkText("Dropdown")); hover.accept(By.linkText("Dropdown Link 5")); hover.accept(By.linkText("Dropdown Submenu Link 5.4")); hover.accept(By.linkText("Dropdown Submenu Link 5.4.1")); } @BeforeTest public void setupDriver() { driver = new FirefoxDriver(); action = new Actions(driver); } @AfterTest public void teardownDriver() { driver.quit(); } } 

Подробный ответ см. Здесь – http://www.testautomationguru.com/selenium-webdriver-automating-hoverable-multilevel-dropdowns/

Можешь попробовать

 WebElement getmenu= driver.findElement(By.xpath("//*[@id='ui-id-2']/span[2]")); //xpath the parent Actions act = new Actions(driver); act.moveToElement(getmenu).perform(); Thread.sleep(3000); WebElement clickElement= driver.findElement(By.linkText("Sofa L"));//xpath the child act.moveToElement(clickElement).click().perform(); 

Если у вас есть случай, в Интернете есть много категорий, используйте первый метод. Для желаемого меню вам нужен только второй метод.

  • Как автоматически загружать через браузер Firefox с помощью FirefoxProfile?
  • Разница между webdriver.get () и webdriver.navigate ()
  • ссылка на устаревший элемент: элемент не привязан к документу страницы
  • Имя пользователя и пароль аутентификации Windows Python не работает
  • У нас есть какие-либо общие функции, чтобы проверить, полностью ли загружена страница в Selenium
  • Страtagsя загрузки страницы для драйвера Chrome (обновлено до Selenium v3.12.0)
  • Selenium ждет загрузки контента Ajax - универсальный подход
  • Как обрабатывать новое окно в Selenium WebDriver с помощью Java?
  • Как выполнить базовую проверку подлинности для FirefoxDriver, ChromeDriver и IEdriver в Selenium WebDriver?
  • NoSuchElementExeption, selenium, неспособный найти элемент
  • Selenium WebDriver : как нажимать на элементы в SVG с помощью XPath
  • Interesting Posts

    Могу ли я получить доступ к библиотеке iTunes для Mac из iPad?

    Нажмите «Один раз» – все пользователи

    Android-карты: как долго кликать по карте?

    Java JDK 7u4 64-разрядная установка не запускается

    Как Facebook устанавливает междоменные куки для iFrames на страницах canvasа?

    Введите событие нажатия клавиши в JavaScript

    Получить значок файла, используемый Shell

    Включить использование 4 ГБ оперативной памяти в Windows 7 32-разрядный

    Как получить диаграмму в Excel, чтобы автоматически добавлять новые серии данных?

    как создать APK и отдельные библиотеки, которые приложение загружает динамически

    Поведение malloc с удалением в C ++

    Выбранная задача «{0}» больше не существует. Чтобы просмотреть текущие задачи, нажмите «Обновить».

    Истинная разница между Excel CSV и стандартным CSV

    Компьютер выключается и включается после запуска. Затем идет мертвый

    Могу ли я управлять своим собственным доменом, используя веб-сервер дома без статического IP-адреса с использованием NO-IP?

    Давайте будем гением компьютера.