Базовые настройки

Включаем Selenium

Практически все задачи решаются без использования хедлесс браузера (Headless browser), и в большинстве случаев использование основной механики забора страниц диггером намного быстрее, дешевле по ресурсам и предпочтительней, поскольку дает больше контроля над процессом. Но бывают случаи, когда использование полноценного браузера с выполнением JavaScript и извлечение финального рендера страницы для обработки - это единственное решение.

Для подобных случаев вы можете использовать Selenium c Chrome Web Driver, однако примите во внимание, что при запросе одной страницы, Selenium также будет загружать все JavaScript и CSS файлы, а также изображения и шрифты. Каждый дополнительно загруженный файл тарифицируется как запрос страницы, поэтому загрузка одной страницы в Selenium может стоить вам десятки запросов. Для включения Selenium воспользуйтесь опцией js_enabled:

            # ВКЛЮЧАЕМ SELENIUM
- config:
    js_enabled: "yes"
            

Для навигации по страницам можно использовать команду Walk. Однако нужно помнить, что при использовании этой команды в Selenium поддерживаются только GET запросы (включая итерацию по пулу ссылок).

Обратите внимание!
Работа с DOM структурой в Selenium отличается от работы с основной механикой Diggernaut. Вы все также можете использовать команду Find для навигации по DOM, однако в ряде случаев, когда вы итерируете по пулу найденных элементов, они могут быть инвалидированы, если браузер пересоздал DOM.

При заходе в блок, можно использовать все команды блокового контекста. А также некоторые дополнительные команды, которые работают только в Selenium:

Команда Описание
type Имитирует ввод текста в текущий элемент (блок). В основном используется для заполнения полей форм.
submit Имитирует отправку формы на выбранном элементе. В основном используется отправки заполненной формы.
click Имитирует клик мыши на текущем элементе. Используется для перехода по ссылкам, нажатия на кнопки, установки фокуса (курсора) на текстовых полях формы для их заполнения текстом. Внимание: при прохождении по ссылке, этой командой не генерируется новый контекст страницы, а замещается текущий.
screenshot Делает скриншот экрана браузера и помещает изображение, закодированное в base64 в регистр.
            # НАХОДИМ ТЕКСТОВОЕ ПОЛЕ
- find:
    path: input[name="username"]
    do:
    # УСТАНАВЛИВАЕМ КУРСОР В ПОЛЕ
    - click
    # ЗАПОЛНЯЕМ ПОЛЕ ТЕКСТОМ
    - type: iamyouruser
    # ОТПРАВЛЯЕМ ФОРМУ
    - submit
            

Если вы включили опцию поддержки Selenium, вы также можете работать используя и стандартную механику забора страниц. Для этого нужно переключить используемый в данный момент механизм. А когда потребуется Selenium, снова переключиться на него. Это позволит вам строить приложения для работы с разными источниками и API в пределах одного диггера. Для переключения используется команда set_engine.

            # ПЕРЕКЛЮЧАЕМСЯ НА СТАНДАРТНЫЙ МЕХАНИЗМ
- set_engine: surf
# ПЕРЕКЛЮЧАЕМСЯ НА SELENIUM
- set_engine: selenium