Инструкция по настройке и проверке работы Selenium в Jupyter Notebook, запускаемом в Docker контейнере в Window 7.
Настройка и запуск
- Добавить в используемый Dockerfile c python строки:
pip install selenium pip install webdriver-manager
Для тестового запуска подойдет Dockerfile:
FROM jupyter/base-notebook RUN pip install jupytext RUN pip install selenium webdriver-manager
- В docker-compose.yaml добавить сервис с Selenium:
browser: image: selenium/standalone-chrome ports: - "4444:4444"
Для проверки работоспособности можно воспользоваться приведенным docker-compose.yaml (дополнительно содержится инструкции по отображению папки содержащей проект и папки с настроенной конфигурацией Jupyter Notebook для поддержки сохранения в git):
version: "3" services: python-server: build: ./python ports: - "8888:8888" volumes: - /PATH_TO_YOU_CODE_FOLDER_FROM_SHARE_DIR://home/jovyan/work - /PATH_TO_YOU_CONFIG_FOLDER_FROM_SHARE_DIR://home/jovyan/.jupyter browser: image: selenium/standalone-chrome ports: - "4444:4444"
- Для запуска выполнить:
docker-compose up -d
Пример кода, открывающего страницу в Selenium
Для проверки достаточно кода:
from selenium import webdriver pDriver = webdriver.Remote( "http://browser:4444/wd/hub", options=webdriver.ChromeOptions() ) sSourceUrl = "http://google.com" pDriver.get( sSourceUrl )
Важно: в sSourceUrl должен быть указан протокол (в примере http), без него код работать не будет.
Данный кода приведен для версии 4.2.*, возможно в более ранних или поздних версиях потребуются изменения. Узнать версию можно выполнив:
import selenium help (selenium)
Как узнать что делает код
- Определить адрес, по которому доступен контейнер:
docker-machine ip
- Набрать в браузере:
IP:4444
Откроется окно:
- Перейти в раздел «Sessions», и выбрать интересующую «Сессию» из доступных:
- В открывшемся окне, ввести в качестве пароля «secret»:
- После этого можно наблюдать за тем что происходит:
Как избавиться от необходимости постоянного ввода пароля при просмотре сессии
Для этого в переменные окружения контейнера с Selenium потребуется добавить строку:
VNC_NO_PASSWORD: 1
Пример файла в котором отключен ввод пароля:
version: "3" services: python-server: build: ./python ports: - "8888:8888" volumes: - /PATH_TO_YOU_CODE_FOLDER_FROM_SHARE_DIR://home/jovyan/work - /PATH_TO_YOU_CONFIG_FOLDER_FROM_SHARE_DIR://home/jovyan/.jupyter browser: image: selenium/standalone-chrome ports: - "4444:4444" environment: VNC_NO_PASSWORD: 1
Что еще понадобится для автоматизации
- Для выбора элементов на странице потребуется: составлять выражения XPath
- Для устранения опечаток в выражениях XPath может пригодиться отладка