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
Скачайте архив с драйвером. Для Windows x64 выберите .zip файл
Распакуйте архив. Я распаковал в папку C:\webdrivers
Добавьте путь до этой папку в системную переменную
PATH
.
В поиске наберите env
В разделе System Variables нажмите New
Создайте новую переменную с именем WEBDRIVER_PATH в поле значение укажите путь до папки в которой у вас лежить geckodriver.exe
Выберите переменную Path и нажмите Edit
Нажмите New и введите %WEBDRIVER_PATH%
Подключить драйвер браузера в Linux
Сперва нужно скачать WebDriver той же версии что и ваш Chrome.
Аналогично и для Firefox
Затем нужно добавить путь до WebDriver в системную переменную
PATH
Проверить версию браузера
Проверить версию google-chrome можно выполнив
google-chrome --version
Google Chrome 89.0.4389.114
Версию браузера можно посмотреть в графическом интерфейсе перейдя в Settings → About Chrome
Обновить 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 драйвера