Блог вебразработчика
  • ГЛАВНАЯ
  • ПОДПИСКА

Selenium Driver: наведение курсора мыши на элемент

Июл06
2012
Написал Tatyana

Довольно часто в тестировании возникает ситуация, когда нужно проверить текст или кликнуть на элементе, который появляется после наведения курсора мыши на другой элемент (всплывающие подсказки, выпадающие меню, кнопки, меняющие текст или форму).

Собственно, стоит задача имитировать событие mouseover над этим элементом. Для этого используется метод moveToElement класса Actions, который входит в состав Advanced User Interactions API. API-интерфейс (в основном) завершен для имитации действий. Он полностью выполнен для HtmlUnit и Firefox, и сейчас в процессе выполнения для Opera и IE.

  • void moveToElement(WebElement toElement) — перемещает курсор (из текущего положения) к центру элементу;
  • void moveToElement(WebElement toElement, int xOffset, int yOffset) — перемещает курсор (из текущего положения) в координаты, рассчитанные от левого верхнего угла элемента с заданным смещением: (X координата элемента + xOffset, Y координата элемента + yOffset).

Действия мыши имеют контекст — текущее положение курсора. Таким образом, при установлении контекста для нескольких действий мыши (с использованием элемента в качестве параметра), первое действие будет выполнено относительно расположения элемента, который используется в качестве контекста, следующее действие будет относительно расположения указателя мыши в конце последнего действия, и т.д.

Пример наведения курсора на элемент:

import org.openqa.selenium.interactions.Actions;

Actions actions = new Actions(driver);
actions.moveToElement(element).build().perform();

WebDriver взаимодействие с пользователем имитирует либо вызовом Javascript события напрямую, либо позволяет браузеру генерировать Javascript событие (то есть native events).
В FirefoxDriver, native events могут быть включены или отключены в профиле Firefox.

FirefoxProfile profile = new FirefoxProfile();
profile.setEnableNativeEvents(true);
FirefoxDriver driver = new FirefoxDriver(profile);

Альтернативный вариант вызова события mouseover элемента — это использование Javascript:

public void mouseOver(WebElement element) {
	String code = "var fireOnThis = arguments[0];"
                + "var evObj = document.createEvent('MouseEvents');"
                + "evObj.initEvent( 'mouseover', true, true );"
                + "fireOnThis.dispatchEvent(evObj);";
	((JavascriptExecutor)driver).executeScript(code, element);
}
  • Нравится
  • Tweet

Опубликовано в Selenium - Помечено Actions, Javascript, Selenium WebDriver
Рассказать всем Twitter Facebook Delicious StumbleUpon E-Mail
← Введение в XPath (часть 3). Функции
Введение в XPath (часть 4). Советы →

Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/u0420283/data/www/internetka.in.ua/wp-includes/class-wp-comment-query.php on line 405

6 комментариев

  1. Артур's Gravatar Артур
    06.08.2013 at 15:03 | Permalink

    Здравствуйте!
    Подскажите, пожалуйста, начинающему.
    Как указывать element в методе moveToElement ?

    • Tatyana's Gravatar Tatyana
      08.08.2013 at 08:20 | Permalink

      Здравствуйте, сначала Вам нужно найти элемент на странице
      FirefoxDriver driver = new FirefoxDriver();
      WebElement element = driver.findElement(By.id("target"));

      потом уже использовать его в методе
      Actions actions = new Actions(driver);
      actions.moveToElement(element).build().perform();

  2. Alex's Gravatar Alex
    04.06.2014 at 07:31 | Permalink

    Хорошо бы ещё парочку картинок приложить, а то не всегда понятно, что результат достигнут.

  3. Roman's Gravatar Roman
    25.09.2014 at 07:54 | Permalink

    Добрый день! Подскажите пожалуйста, как можно проверить таг на ссылке, который появляется при наведении на неё мышкой.

  4. Алексей's Gravatar Алексей
    13.01.2016 at 20:45 | Permalink

    Добрый день! У меня что-то не получилось навести курсор с помощью public void mouseOver(WebElement element) При наведении должно появиться выпадающее меню, а оно не появляется. Не подскажите почему так может быть?

  5. Алексей's Gravatar Алексей
    12.02.2016 at 05:51 | Permalink

    Приветствую, помогите новичку, использую плагин FireFox Selenium IDE, некоторые поля имеют динамический id (обновляется при каждом запуске) — по этому пришлось цепляться к объектам по свойству «name» так как оно уникальное и статично. Вот те объекты к которым я цеплялся через «name», в них значения заносятся без проблем при прохождении теста, а после окончания, если навести мышь на объект значение пропадает. Как этого избежать

  1. Selenium Driver. Нажатие на элемент. Решение часто возникающих проблем — Блог вебразработчика on 19.07.2012 at 13:22

Свежие записи

  • WebDriver и SSL Untrusted certificate
  • Видеозапись выполнения тестов Selenium
  • Selenium WebDriver: basic авторизация
  • BrowserMob Proxy + Selenium: автоматизация сбора данных о производительности
  • Hibernate 4: UserType пользовательский тип данных (часть 2)

Поиск

Рубрики

  • Hibernate ORM
  • SEO
  • Разное
  • Тестирование
    • JUnit
    • Selenium
    • Thucydides

Метки

Actions AJAX Alert AutoIt ChromeDriver Exceptions ExpectedConditions FindElement FirefoxDriver Hibernate InternetExplorerDriver Java Javascript Jenkins JUnit4 Maven PageFactory Page Object RemoteWebDriver Select Selenium IDE Selenium Server Selenium WebDriver switchTo Thucydides WebDriverWait XPath Автоматизированное тестирование база данных заработок в сети сеть Интернет скорость продвижения сайта статейное продвижение услуги продвижения

Реклама


Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.

Блог вебразработчика
Функциональное тестирование и продвижение сайтов

Яндекс.Метрика