Операции с мышью и клавиатурой в Selenium

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

Ниже приведены часто используемые операции с мышью и клавиатурой в Selenium и их описания:

Операции с мышью

Тип операцииМетодОписание
Щелчокclick(element)илиclick()Выполняет щелчок по указанному элементу или текущей позиции курсора мыши.
Двойной щелчокdouble_click(element)илиdouble_click()Выполняет двойной щелчок по указанному элементу или текущей позиции курсора мыши.
Щелчок правой кнопкойcontext_click(element)илиcontext_click()Выполняет щелчок правой кнопкой мыши по указанному элементу или текущей позиции курсора.
Перетаскиваниеdrag_and_drop(source, target)Перетаскивает исходный элемент и отпускает его на целевом элементе.
Наведениеmove_to_element(element)Перемещает мышь к указанному элементу.
Нажатие и отпусканиеclick_and_hold(element)иrelease()Удерживает указанный элемент и отпускает его, используется для выполнения операций перетаскивания.

Операции с клавиатурой

Тип операцииМетодОписание
Ввод текстаsend_keys("text")Вводит указанный текст в поле ввода или текстовую область.
Нажатие комбинации клавишsend_keys(Keys.CONTROL + 'a')Имитирует нажатие комбинации клавиш (например, Ctrl + A).
Нажатие одной клавишиsend_keys(Keys.KEY_NAME)Имитирует нажатие одной клавиши (например, Enter, Tab, Shift и т. д.).
Отпускание клавишиkey_up(key)Отпускает нажатую клавишу.

Часто используемые значения клавиш клавиатуры

Значение клавишиОписание
Keys.ENTERКлавиша Enter
Keys.TABКлавиша Tab
Keys.SHIFTКлавиша Shift
Keys.CONTROLКлавиша Ctrl
Keys.ALTКлавиша Alt
Keys.ESCAPEКлавиша Esc
Keys.BACKSPACEКлавиша Backspace
Keys.SPACEПробел
Keys.ARROW_UPКлавиша «Стрелка вверх»
Keys.ARROW_DOWNКлавиша «Стрелка вниз»
Keys.ARROW_LEFTКлавиша «Стрелка влево»
Keys.ARROW_RIGHTКлавиша «Стрелка вправо»

Операции с мышью (класс ActionChains)

В Selenium операции с мышью в основном реализуются черезActionChainsclass.ActionChainsЭтот класс позволяет выполнять сложные операции с мышью, такие как щелчок, двойной щелчок, щелчок правой кнопкой, перетаскивание и наведение курсора.

Клик, двойной клик, клик правой кнопкой

  1. Click: Имитирует операцию щелчка левой кнопкой мыши.
  2. Double Click: Имитирует операцию двойного щелчка левой кнопкой мыши.
  3. Right Click: Имитирует операцию щелчка правой кнопкой мыши.

Пример

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import С помощью

# Установите правильный путь к драйверу
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)


# Открыть веб-страницу
driver.get("https://example.com")

# Найти элемент
element = driver.find_element(By.ID, "element_id")

# Создать объект ActionChains
actions = ActionChains(driver)

# Операция щелчка
actions.click(element).perform()

# Операция двойного щелчка
actions.double_click(element).perform()

# Операция щелчка правой кнопкой мыши
actions.context_click(element).perform()

# Закройте браузер
driver.quit()

Операции перетаскивания

Операция перетаскивания означает перетаскивание элемента в другую позицию или на другой элемент.

Пример

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import С помощью

# Установите правильный путь к драйверу
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)


# Открыть веб-страницу
driver.get("https://example.com")

# Найдите элемент, который нужно перетащить, и целевой элемент
source_element = driver.find_element(By.ID, "source_element_id")
target_element = driver.find_element(By.ID, "target_element_id")

# Создать объект ActionChains
actions = ActionChains(driver)

# Операция перетаскивания
actions.drag_and_drop(source_element, target_element).perform()

# Закройте браузер
driver.quit()

Операции наведения

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

Пример

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import С помощью

# Инициализация драйвера браузера
driver = webdriver.Chrome()

# Открыть веб-страницу
driver.get("https://example.com")

# Найти элемент
element = driver.find_element(By.ID, "element_id")

# Создать объект ActionChains
actions = ActionChains(driver)

# Операция наведения
actions.move_to_element(element).perform()

# Закройте браузер
driver.quit()

Операции с клавиатурой (класс Keys)

Операции с клавиатурой в Selenium в основном реализуются черезKeysclass.KeysКласс предоставляет имитированные операции для различных клавиш клавиатуры, включая отправку комбинаций клавиш и операции со специальными клавишами.

Отправка комбинаций клавиш

Операция комбинации клавиш означает одновременное нажатие нескольких клавиш, напримерCtrl + C(копирование) илиCtrl + V(вставка).

Пример

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import С помощью

# Установите правильный путь к драйверу
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# Открыть веб-страницу
driver.get("https://example.com")

# Находим поле ввода
input_element = driver.find_element(By.ID, "input_element_id")

# Ввести содержимое и отправить комбинации клавиш
input_element.send_keys("Hello, World!")
input_element.send_keys(Keys.CONTROL, 'a')  # Выделить все
input_element.send_keys(Keys.CONTROL, 'c')  # Копировать
input_element.send_keys(Keys.CONTROL, 'v')  # Вставить

# Закройте браузер
driver.quit()

Операции со специальными клавишами (Enter, Tab, Shift и т. д.)

Операция со специальными клавишами означает имитацию нажатия специальных клавиш на клавиатуре, таких какEnter、Tab、Shiftи т. д.

Пример

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import С помощью

# Установите правильный путь к драйверу
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# Открыть веб-страницу
driver.get("https://example.com")

# Находим поле ввода
input_element = driver.find_element(By.ID, "input_element_id")

# Введите содержимое и нажмите клавишу Enter
input_element.send_keys("Hello, World!")
input_element.send_keys(Keys.ENTER)

# Нажмите клавишу Tab, чтобы перейти к следующему элементу
input_element.send_keys(Keys.TAB)

# Нажмите клавишу Shift и введите заглавные буквы
input_element.send_keys(Keys.SHIFT, "a")  # Введите заглавную 'A'

# Закройте браузер
driver.quit()

Комплексный пример

Ниже приведён полный пример, демонстрирующий использование операций мыши и клавиатуры:

Пример

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import С помощью
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

# Установите правильный путь к драйверу
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# Открыть веб-страницу
driver.get("https://www.example.com")

# Операции с мышью
element = driver.find_element(By.ID, "button")
actions = ActionChains(driver)
actions.move_to_element(element).click().perform()

# Операции с клавиатурой
input_box = driver.find_element(By.ID, "input-box")
input_box.send_keys("Hello, Selenium!")
input_box.send_keys(Keys.ENTER)

# Закройте браузер
driver.quit()
Другие расширения