Как имитировать наведение в selenium python
Перейти к содержимому

Как имитировать наведение в selenium python

  • автор:

Как совершить mouseover в Selenium WebDriver на Java

Для симуляции движения курсора в Selenium WebDriver используйте класс Actions и примените метод moveToElement() к требуемому элементу. Для выполнения действия используйте метод perform() :

Скопировать код

Actions action = new Actions(driver); action.moveToElement(driver.findElement(By.id("elementId"))).perform();

Это позволит успешно навести курсор на элемент с определённым идентификатором.

Разведывательный заход в цепочку действий

Если Вас интересует объединение действий, познакомьтесь с цепочками действий (Actions Chain). Они помогают аккуратно воспроизвести действия пользователя.

Скопировать код

WebElement menu = driver.findElement(By.id("menuId")); WebElement submenu = driver.findElement(By.id("submenuId")); Actions actions = new Actions(driver); actions.moveToElement(menu).moveToElement(submenu).click().build().perform();

В этом примере курсор первоначально перемещается на элемент меню, затем на подменю, и только после этого происходит клик.

Взаимодействие с динамическим контентом

Для управления элементами, которые могут изменяться на странице, используйте явные ожидания:

Скопировать код

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement dynamicElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("dynamicElementId"))); Actions actions = new Actions(driver); actions.moveToElement(dynamicElement).perform();

Этот код ожидает до десяти секунд, пока не появится нужный элемент, и только после этого производит наведение курсора.

Показываем класс при помощи JavaScriptExecutor

Для обхода специфических браузерных проблем вы можете использовать JavaScriptExecutor .

Скопировать код

JavascriptExecutor js = (JavascriptExecutor) driver; String mouseOverScript = ". "; // сценарий для события mouseover js.executeScript(mouseOverScript, driver.findElement(By.id("elementId")));

Таким образом, вы сможете программно симулировать событие наведения курсора на элемент.

Осваиваем искусство локализации

Локаторы элементов играют ключевую роль в тестировании:

Скопировать код

action.moveToElement(driver.findElement(By.cssSelector(".classSelector"))).perform(); action.moveToElement(driver.findElement(By.xpath("//div[@class='className']"))).perform(); action.moveToElement(driver.findElement(By.linkText("Clickable Link Text"))).perform();

Можно использовать различные типы локаторов для точной идентификации элементов.

Избавляемся от зомби-памяти эффективным управлением драйвером

Не забудьте корректно завершить работу драйвера после тестирования, чтобы предотвратить утечки памяти:

Скопировать код

driver.quit(); // Завершаем работу с WebDriver правильно.

Это предотвратит накопление неиспользованных объектов в памяти.

Визуализация

Понимайте процесс наведения курсора в Selenium как управление бумажным самолётом, направленным к цели:

Мы хотим, чтобы самолётик приземлился на мышь (��):

Скопировать код

Actions action = new Actions(driver); action.moveToElement(webElement).perform();

Вот самолётик в полёте:

[��, ��, ��, ✏️, ��, ✈️➡️��, ��]

И самолётик приземлился:

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

Ловушки и скрытые препятствия: ступайте осторожно

Убедитесь, что вы внимаете на следующие аспекты:

  • Ссылки на элементы могут устаревать, всегда проверяйте их актуальность.
  • Синхронизируйте действия с загрузкой элементов.
  • Поведение может меняться в разных браузерах, используйте JavaScriptExecutor как альтернативу.

Укрепление надёжности ваших тестов

Совершенствуйте локаторы и код, тестируйте в различных браузерах и стремитесь к максимально реалистичной имитации действий пользователя.

Полезные материалы

Ниже приведены ссылки на дополнительные ресурсы для более глубокого понимания mouseover и работы с классом Actions в Selenium WebDriver.

Selenium WebDriver Python Наведение курсора мыши на объект

Почему вы решили, что наведения не было? Может вы просто не замечаете, так как тест заканчивается?

9 фев 2018 в 10:12

@German Спасибо за ответ. Помогло

12 фев 2018 в 13:47

Да. Теперь наведение есть, но он упорно не нажимает на появляющуюся кнопку.

20 фев 2018 в 13:11

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Все. Сам разобрался. Надо убрать hover = и hover.perform() . Все заработало

Отслеживать

5,658 5 5 золотых знаков 24 24 серебряных знака 59 59 бронзовых знаков

ответ дан 20 фев 2018 в 13:57

Сергей Богданов Сергей Богданов

353 7 7 серебряных знаков 23 23 бронзовых знака

Как можно в Selenium переместить курсор мыши по указанным координатам?

Добрый день,использую selenium + python
есть возможно переместить курсор мыши по указанным координатам?
сейчас делаю через смещение курсора ActionChains move_by_offset, но меня это не очень устраивает.
Покопался в коде selenium и нашел вот такой вот класс
from selenium.webdriver.common.actions.pointer_actions import PointerActions
и метод move_to_location
но я никак не пойму как в него передать driver и вызвать его правильно.
Заранее благодарен за ответ

  • Вопрос задан более двух лет назад
  • 2216 просмотров

Комментировать

Решения вопроса 1

Nevea @Nevea Автор вопроса

В общем разобрался, может кому-то нужно

driver=webdriver.Firefox() action = ActionChains(driver) x=100 y=100 action.w3c_actions.pointer_action.move_to_location(x,y)

Перемещает курсор на точку 100,100

Ответ написан более двух лет назад

Комментировать

Нравится 1 Комментировать

Ответы на вопрос 0

Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python

Коллеги, как разграничить тесты в pytest?

  • 1 подписчик
  • 2 часа назад
  • 36 просмотров

python

  • Python
  • +2 ещё

Как правильно открыть 10 PPTP соединений в debian 11?

  • 1 подписчик
  • 3 часа назад
  • 33 просмотра

Класс действия в Selenium — События щелчка мыши и клавиатуры

Класс действия в Selenium это встроенная функция, предоставляемая selenium для обработки событий клавиатуры и мыши. Он включает в себя различные operaтакие функции, как нажатие нескольких событий с помощью клавиши управления, события перетаскивания и многое другое. Эти operaдействия из класса действий выполняются с использованием расширенного API взаимодействия с пользователем в Selenium Вебдрайвер.

Обработка событий клавиатуры и мыши

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

Способ доставки Описание
нажмите и удерживайте() Щелкает (не отпуская) в текущем местоположении мыши.
контекстклик() Выполняет контекстный щелчок в текущем местоположении мыши. (Действие щелчка правой кнопкой мыши)
doubleЩелкните () Выполняет double-щелкните в текущем местоположении мыши.
dragAndDrop(источник, цель) Выполняет нажатие и удерживание в месте расположения исходного элемента, перемещается к местоположению целевого элемента, а затем отпускает мышь.

Параметры:

исходный элемент для эмуляции нажатия кнопки.

целевой элемент, к которому нужно переместиться и отпустить мышь.

параметры:

исходный элемент для эмуляции нажатия кнопки.

xOffset — смещение горизонтального перемещения.

yOffset — смещение вертикального перемещения.

параметры:

modifier_key – любая из клавиш-модификаторов (Keys.ALT, Keys.SHIFTили Клавиши.CONTROL)

параметры:

modifier_key – любая из клавиш-модификаторов (Keys.ALT, Keys.SHIFTили Клавиши.CONTROL)

параметры:

x-offset- горизонтальное смещение. Отрицательное значение означает перемещение мыши влево.

y-offset — вертикальное смещение. Отрицательное значение означает перемещение мыши вниз.

параметры:

toElement — элемент, к которому нужно перейти.

параметры:

onElement – ​​элемент, который будет получать нажатия клавиш, обычно это текстовое поле.

charsequence – любое строковое значение, представляющее последовательность нажатий клавиш, которые будут отправлены.

В следующемwing Например, мы будем использовать метод moveToElement() для наведения курсора мыши на одну из строк таблицы Mercury Tours. См. пример ниже.

Обработка событий клавиатуры и мыши

Показанная выше ячейка является частью элемент. Если он не наведен, его цвет — #FFC455 (оранжевый). При наведении курсора цвет ячейки становится прозрачным. Он станет того же цвета, что и синий фон всей оранжевой таблицы.

Шаг 1) Импортируйте Действия и Действие классов.

Обработка событий клавиатуры и мыши

Шаг 2) Создайте экземпляр нового объекта Actions.

Обработка событий клавиатуры и мыши

Шаг 3) Создайте экземпляр Action, используя объект Actions на шаге 2.

Обработка событий клавиатуры и мыши

В этом случае мы собираемся использовать метод moveToElement(), потому что мы просто наведем указатель мыши на ссылку «Домой». Метод build() всегда является последним используемым методом, поэтому все перечисленные действия будут скомпилированы в один шаг.

Шаг 4) Используйте метод Perform() при выполнении объекта Action, который мы разработали на шаге 3.

Обработка событий клавиатуры и мыши

Ниже приведен весь код WebDriver для проверки цвета фона элемент до и после наведения курсора мыши.

package newproject; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Action; import org.openqa.selenium.interactions.Actions; public class PG7 < public static void main(String[] args) < String baseUrl = "http://demo.guru99.com/test/newtours/"; System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement link_Home = driver.findElement(By.linkText("Home")); WebElement td_Home = driver .findElement(By .xpath("//html/body/div" + "/table/tbody/tr/td" + "/table/tbody/tr/td" + "/table/tbody/tr/td" + "/table/tbody/tr")); Actions builder = new Actions(driver); Action mouseOverHome = builder .moveToElement(link_Home) .build(); String bgColor = td_Home.getCssValue("background-color"); System.out.println("Before hover: " + bgColor); mouseOverHome.perform(); bgColor = td_Home.getCssValue("background-color"); System.out.println("After hover: " + bgColor); driver.close(); >>

В выводе ниже четко указано, что цвет фона стал прозрачным после наведения курсора мыши.

Класс действия в Selenium

Создание серии из нескольких действий

Вы можете построить серию действий, используя классы Action и Actions.. Просто не забудьте закрыть серию с помощью метода build(). Рассмотрим пример кода ниже.

Создание серии из нескольких действий

public static void main(String[] args) < String baseUrl = "http://www.facebook.com/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement txtUsername = driver.findElement(By.id("email")); Actions builder = new Actions(driver); Action seriesOfActions = builder .moveToElement(txtUsername) .click() .keyDown(txtUsername, Keys.SHIFT) .sendKeys(txtUsername, "hello") .keyUp(txtUsername, Keys.SHIFT) .doubleClick(txtUsername) .contextClick() .build(); seriesOfActions.perform() ; >

Создание серии из нескольких действий

Обзор

  • Обработка специальных событий клавиатуры и мыши осуществляется с помощью API AdvancedUserInteractions.
  • Часто используемые события ключевых слов и мыши: doubleClick(), keyUp, dragAndDropBy, contextClick и sendKeys.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *