Selenium

Содержание
Введение
Windows: Подключить драйвер браузера
Linux: Подключить драйвер браузера
Как раскрыть браузер под Selenium на весь экран
Определить подходящий селектор
Ошибки
Похожие статьи

Введение

В этой статье вы узнаете как пользоваться Selenium без привязки к какому-то языку программирования.

О написании тестов на Python с использованием Selenium читайте в статье Selenium + Python . Если вас интересует Java рекомендую статью Selenium + Java

Selenium WebDriver — это инструмент для автоматизации действий веб-браузера.

В большинстве случаев используется для тестирования Web-приложений, но этим не ограничивается.

Сам по себе Selenium Webdriver в отличие, например, от Selenium IDE ничего для тестирования не содержит, поэтому используется в связке с библиотеками для тестирования, которые есть в большинстве современных языков программирования.

В Python это unittest , nose, pytest и другие. В Java это JUnit.

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

До появления PlayWright Selenium Webdriver использовался в RobotFramework

Подключить драйвер браузера

Перейдите на selenium.dev и скачайте драйвер для нужного браузера.

Например для Firefox

Скачать вебдрайвер браузера для Selenium изображение с сайта www.andreyolegovich.ru

Скачайте архив с драйвером. Для Windows x64 выберите .zip файл

Скачать вебдрайвер браузера для Selenium изображение с сайта www.andreyolegovich.ru

Распакуйте архив. Я распаковал в папку C:\webdrivers

Скачать вебдрайвер браузера для Selenium изображение с сайта www.andreyolegovich.ru

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

В поиске наберите env

Скачать вебдрайвер браузера для Selenium изображение с сайта www.andreyolegovich.ru

В разделе System Variables нажмите New

Скачать вебдрайвер браузера для Selenium изображение с сайта www.andreyolegovich.ru

Создайте новую переменную с именем WEBDRIVER_PATH в поле значение укажите путь до папки в которой у вас лежить geckodriver.exe

Скачать вебдрайвер браузера для Selenium изображение с сайта www.andreyolegovich.ru

Выберите переменную Path и нажмите Edit

Скачать вебдрайвер браузера для Selenium изображение с сайта www.andreyolegovich.ru

Нажмите New и введите %WEBDRIVER_PATH%

Скачать вебдрайвер браузера для Selenium изображение с сайта www.andreyolegovich.ru

Скачать вебдрайвер браузера для Selenium изображение с сайта www.andreyolegovich.ru

Подключить драйвер браузера в Linux

Сперва нужно скачать WebDriver той же версии что и ваш Chrome.

Аналогично и для Firefox

Затем нужно добавить путь до WebDriver в системную переменную PATH

Проверить версию браузера

Проверить версию google-chrome можно выполнив

google-chrome --version

Google Chrome 89.0.4389.114

Версию браузера можно посмотреть в графическом интерфейсе перейдя в Settings → About Chrome

Версия Google Chrome изображение с сайта www.andreyolegovich.ru

Обновить google-chrome до последней стабильной версии в линукс

sudo apt-get update
sudo apt-get --only-upgrade install google-chrome-stable

Проверить обновление

google-chrome --version

Google Chrome 90.0.4430.93

Посетите selenium.dev и скачайте chromedriver_linux64.zip для Chrome или geckodriver-v0.28.0-linux64.tar.gz для Firefox

Предположим, что они теперь в папке Downloads

ls -l ~/Downloads

-rw-rw-r-- 1 andrei andrei 5564194 Nov 20 10:02 chromedriver_linux64.zip
-rw-rw-r-- 1 andrei andrei 2650003 Nov 20 10:03 geckodriver-v0.28.0-linux64.tar.gz

Создайте директорию /opt/WebDriver/bin и скопируйте туда архивы с драйверами

sudo mkdir /opt/WebDriver/bin
sudo cp ~/Downloads/chromedriver_linux64.zip ~/Downloads/geckodriver-v0.28.0-linux64.tar.gz /opt/WebDriver/bin
ls -l /opt/WebDriver/bin

-rw-rw-r-- 1 andrei andrei 5564194 Nov 20 10:05 chromedriver_linux64.zip
-rw-rw-r-- 1 andrei andrei 2650003 Nov 20 10:05 geckodriver-v0.28.0-linux64.tar.gz

Перейдите в директорию /opt/WebDriver/bin и распакуйте архивы

cd /opt/WebDriver/bin
sudo tar -xvzf geckodriver-v0.28.0-linux64.tar.gz
sudo unzip chromedriver_linux64.zip
ls -laFh /opt/WebDriver/bin

total 27M drwxr-xr-x 2 root root 4.0K Nov 20 10:46 ./ drwxr-xr-x 3 root root 4.0K Nov 20 10:07 ../ -rwxr-xr-x 1 root root 11M Oct 15 23:34 chromedriver* -rw-r--r-- 1 root root 5.4M Nov 20 10:19 chromedriver_linux64.zip -rwxr-xr-x 1 sshit sshit 7.6M Nov 3 18:13 geckodriver* -rw-r--r-- 1 root root 2.6M Nov 20 10:19 geckodriver-v0.28.0-linux64.tar.gz

После успешной распаковки можно убедиться в наличии двух исполняемых файлов chromedriver и geckodriver

Теперь директорию /opt/WebDriver/bin нужно добавить в PATH

Для этого откройте файл .bashrc и добавьте туда следующий код

vi ~/.bashrc

PATH="/opt/WebDriver/bin:${PATH}" export PATH

Перезапустите терминал

exec bash

Как раскрыть Selenium на весь экран

Первый способ - открыть в kiosk режиме

from selenium import webdriver from selenium.webdriver.chrome.options import Options chromeOptions = webdriver.ChromeOptions() chromeOptions.add_argument("--kiosk") driver = webdriver.Chrome(options=chromeOptions)

Второй способ - указать драйверу ширину равную ширине Вашего экрана

driver.set_window_size(1920, 1024)

Действия

clear, click, findElement, findElements, getAttribute, getCssValue, sendKeys, submit, isDisplayed, isEnabled, getLocation, isSelected, getSize, getTagName, getText,

Определить подходящий селектор

Если вручную что-то не получается, можно попробовать онлайн сервисы, например try.jsoup.org

Ошибки

Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: element not interactable

Обычно появляется если вы пытаетесь выполнить sendKeys на элемент, который это не поддерживает.

Status code was: 64

selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 64

Попробуйте установить последнюю версию gecko драйвера

Похожие статьи
Selenium
Selenium Python
Несколько драйверов одновременно
Добавить Selenium в PyCharm
Тестирование ПО
Автоматизация тестирования
Учебник по тестированию
Тестирование API
Тестирование с помощью Python
Robot Framework
Selenium + Java