Операции с мышью и клавиатурой в 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Этот класс позволяет выполнять сложные операции с мышью, такие как щелчок, двойной щелчок, щелчок правой кнопкой, перетаскивание и наведение курсора.
Клик, двойной клик, клик правой кнопкой
- Click: Имитирует операцию щелчка левой кнопкой мыши.
- Double Click: Имитирует операцию двойного щелчка левой кнопкой мыши.
- Right Click: Имитирует операцию щелчка правой кнопкой мыши.
Пример
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.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.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.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.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.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()