Селен

Запуск Selenium Headless с Chrome

Запуск Selenium Headless с Chrome
Если вы хотите выполнить веб-автоматизацию Selenium или очистку веб-страниц с помощью веб-браузера Chrome, по умолчанию он запускает графическую версию веб-браузера Chrome. Это не проблема, если вы запускаете сценарий Selenium из графической среды рабочего стола Linux (i.е., GNOME 3, KDE, XFCE4). Но если вы хотите запустить свой Selenium-скрипт в автономной среде (i.е., Ubuntu Server, CentOS / RHEL Server), где у вас не установлена ​​графическая среда рабочего стола, тогда это не сработает.

К счастью, вы можете настроить Selenium для запуска веб-браузера Chrome в автономном режиме. В этом режиме веб-браузер Chrome будет работать без графического пользовательского интерфейса. Итак, Selenium может выполнять веб-автоматизацию, удаление веб-страниц, тестирование браузера и т. Д. с помощью веб-браузера Chrome на серверах Linux, где у вас не установлена ​​графическая среда рабочего стола.

В этой статье я покажу вам, как запустить Selenium с веб-браузером Chrome в режиме без подключения к Интернету. Я буду использовать библиотеку Selenium Python и писать сценарии Selenium на языке программирования Python 3. Итак, приступим.

Предпосылки:

Чтобы опробовать команды и примеры из этой статьи, у вас должен быть,

1) Дистрибутив Linux (желательно Ubuntu), установленный на вашем компьютере.
2) Python 3 установлен на вашем компьютере.
3) PIP 3 установлен на вашем компьютере.
4) Google Chrome установлен на вашем компьютере.

Вы можете найти множество статей по этим темам на LinuxHint.ком. Обязательно ознакомьтесь с ними, если вам нужна помощь.

Подготовка виртуальной среды Python 3 для проекта:

Виртуальная среда Python используется для создания изолированного каталога проекта Python. Модули Python, которые вы устанавливаете с помощью PIP, будут установлены только в каталоге проекта, а не глобально.

Python virtualenv модуль используется для управления виртуальными средами Python.

Вы можете установить Python virtualenv модуль глобально с использованием PIP 3 следующим образом:

$ sudo pip3 установить virtualenv

Python virtualenv должен быть установлен.

Создать каталог проекта хром-безголовый / в вашем текущем рабочем каталоге следующим образом:

$ mkdir -pv chrome-headless / драйверы

Перейдите в каталог только что созданного проекта хром-безголовый / следующим образом:

$ cd хром без головы /

Создайте виртуальную среду Python в каталоге вашего проекта с помощью следующей команды:

$ virtualenv .Venv

Виртуальная среда Python должна быть создана в .Venv / каталог в каталоге вашего проекта.

Активируйте виртуальную среду Python в каталоге вашего проекта с помощью следующей команды:

$ источник .Venv / bin / активировать

Установка библиотеки Selenium Python:

Библиотека Selenium доступна в официальном репозитории Python PyPI.

Вы можете установить библиотеку Selenium Python с помощью PIP 3 следующим образом:

$ pip3 установить селен

Должна быть установлена ​​библиотека Selenium Python.

Установка веб-драйвера Chrome:

Веб-драйвер Chrome позволит вам управлять или автоматизировать веб-браузер Google Chrome из Selenium.

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

Сначала откройте Google Chrome и посетите chrome: // settings / help.

После загрузки страницы вы должны найти номер версии Google Chrome в О Chrome раздел. Обратите внимание на первые 3 раздела номера версии, как показано на скриншоте ниже.

Чтобы загрузить веб-драйвер Chrome, посетите официальную страницу загрузки драйвера Chrome.

в Текущие выпуски В разделе Chrome Web Driver для самых последних выпусков веб-браузера Google Chrome должен быть доступен, как вы можете видеть на снимке экрана ниже. Номер версии одного из текущих выпусков веб-драйвера Chrome должен совпадать с номером версии вашего веб-браузера Google Chrome. Первые 3 раздела номера версии веб-драйвера Chrome и веб-браузера Google Chrome должны совпадать.

Если искомая версия отсутствует в Текущие выпуски раздел, прокрутите немного вниз, и вы сможете найти его.

После того, как вы нажмете номер версии веб-драйвера Chrome, он должен перейти на страницу загрузки. Нажми на chromedriver_linux64.застегивать файл отсюда.

Необходимо скачать архив Chrome Web Driver.

Скачанный chromedriver_linux64.застегивать файл должен быть в вашем ~ / Загрузки каталог.

$ ls -lh ~ / Загрузки

Извлеките chromedriver_linux64.застегивать архив из ~ / Загрузки каталог в драйверы / каталог вашего проекта следующим образом:

$ unzip ~ / Загрузки / chromedriver_linux64.zip -d драйверы /

Новый файл хромированная отвертка должен быть создан в драйверы / каталог вашего проекта после извлечения архива Chrome Web Driver, как вы можете видеть на скриншоте ниже.

Тестирование веб-драйвера Chrome в режиме Headless:

В этом разделе я покажу вам, как запустить Selenium с помощью драйвера Chrome в безголовом режиме.

Сначала создайте новый скрипт Python ex01.ру в каталоге вашего проекта и введите в нем следующие строки кодов.

из selenium import webdriver
из селена.webdriver.общий.ключи импорт Ключи
из селена.webdriver.хром.параметры импорта Параметры
chromeOptions = Параметры ()
chromeOptions.headless = Правда
браузер = веб-драйвер.Chrome (исполняемый_путь = "./ drivers / chromedriver ", options = chromeOptions)
браузер.get ("http: // linuxhint.com ")
print ("Заголовок:% s"% browser.заглавие)
браузер.покидать()

Как только вы закончите, сохраните ex01.ру Скрипт Python.

Эти строки импортируют все необходимые данные из селен библиотека.

Как я уже говорил ранее, по умолчанию драйвер Chrome пытается запустить Google Chrome в графическом режиме. Чтобы запустить Google Chrome в безголовом режиме, мы должны указать драйверу Chrome передать некоторые дополнительные параметры. Эта строка создает Параметры объект, который мы можем передать веб-драйверу Chrome позже.

Вы можете запустить Google Chrome в безголовом режиме, просто установив Обезглавленный собственность chromeOptions Возражать Правда.

Или вы можете использовать add_argument () метод chromeOptions объект добавить -Обезглавленный аргумент командной строки для запуска Google Chrome в автономном режиме с помощью веб-драйвера Selenium Chrome.

Вы можете использовать webdriver.Хром() метод инициализации / запуска веб-браузера Google Chrome из Selenium. В исполняемый_путь аргумент используется, чтобы указать Selenium использовать хромированная отвертка двоичный из драйверы / каталог проекта. В параметры аргумент указывает Selenium использовать наши пользовательские параметры chromeOptions.

Как только Selenium запускает веб-браузер Google Chrome с помощью веб-драйвера Selenium Chrome, он возвращает браузер объект. Мы можем использовать его для управления экземпляром Google Chrome позже.

В браузер.получать() метод загружает linuxhint.ком веб-сайт в веб-браузере Google Chrome в фоновом режиме (в автономном режиме).

Как только страница загрузится, браузер.заглавие собственность будет иметь название веб-сайта. Питон Распечатать() метод печатает заголовок веб-сайта на консоли.

Затем браузер.покидать() закрывает веб-браузер Google Chrome.

Чтобы проверить, может ли Selenium работать в автономном режиме, запустите скрипт Python ex01.ру следующим образом:

$ python3 ex01.ру

Он должен печатать заголовок веб-сайта на консоли, не открывая веб-браузер Google Chrome в графическом режиме.

Чтобы показать вам, что он работает с автономными серверами Linux (на которых не установлен графический пользовательский интерфейс), я запустил скрипт Python ex01.ру на Ubuntu Server 20.04 LTS. Как видите, скрипт работает нормально.

Веб-парсинг с помощью Selenium в режиме Headless с использованием веб-драйвера Chrome:

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

Сначала посетите генератор случайных имен.информация из Google Chrome или любого другого веб-браузера. Этот веб-сайт будет генерировать 10 случайных имен каждый раз, когда вы перезагружаете страницу, как вы можете видеть на скриншоте ниже. Наша цель - извлечь эти случайные имена с помощью Selenium в безголовом режиме.

Чтобы узнать HTML-структуру списка, вам нужно открыть Инструмент разработчика Chrome. Для этого нажмите правую кнопку мыши (ПКМ) на странице и нажмите Осмотреть или нажмите + + я.

Инструмент разработчика Chrome должен быть открыт. Нажми на Значок проверки () как отмечено на скриншоте ниже.

Затем наведите указатель мыши на список Случайные имена. Список должен быть выделен, как показано на скриншоте ниже. Затем нажмите левую кнопку мыши (ЛКМ), чтобы выбрать список.

HTML-код списка должен быть выделен в Элементы вкладка Инструмент разработчика Chrome. Здесь список случайных имен находится внутри div элемент. В div элемент имеет класс название полученные результаты. Внутри него есть ол элемент с класс название список имен. Внутри ол элемент, каждое из имен находится в Ли элемент.

Исходя из этого, можно сказать, что чтобы добраться до Ли теги, мы должны следовать div.результаты> ол.nameList> li

Итак, наш селектор CSS будет div.результаты ол.nameList li (просто замените > знаки с пробелом)

Для извлечения этих случайных имен создайте новый скрипт Python ex02.ру и введите в нем следующие строки кода.

из selenium import webdriver
из селена.webdriver.общий.ключи импорт Ключи
из селена.webdriver.хром.параметры импорта Параметры
chromeOptions = Параметры ()
chromeOptions.headless = Правда
браузер = веб-драйвер.Chrome (исполняемый_путь = "./ drivers / chromedriver ", options = chromeOptions)
браузер.get ("http: // генератор случайных имен.Информация/")
nameList = браузер.find_elements_by_css_selector ('div.результаты ол.nameList li ')
для имени в nameList:
печать (имя.текст)
браузер.покидать()

Как только вы закончите, сохраните ex02.ру Скрипт Python.

Я объяснил строки 1-8 в предыдущем разделе этой статьи. Они такие же, как в ex01.ру.

Строка 10 загружает веб-сайт генератора случайных имен с помощью браузер.получать() метод.

Строка 11 выбирает список имен с помощью браузер.find_elements_by_css_selector () метод. Этот метод использует селектор CSS div.результаты ол.nameList li найти список имен. Затем список имен сохраняется в список имен Переменная.

В строках 13 и 14 a для цикл используется для перебора список имен Список Ли элементы. На каждой итерации содержимое Ли элемент напечатан на консоли.

Теперь запустите скрипт Python ex02.ру следующим образом:

$ python3 ex02.ру

Как видите, скрипт Python ex02.ру получил все случайные имена с веб-страницы.

Если вы запустите скрипт во второй раз, он должен вернуть новый список случайных имен, как вы можете видеть на скриншоте ниже.

Проблемы, с которыми вы можете столкнуться при запуске Selenium в безголовом режиме:

Вы видели ранее, что запустить Selenium в безголовом режиме с помощью драйвера Chrome так же просто, как установить chromeOptions.Обезглавленный флаг Правда.

Это решение может не работать для вас в некоторых дистрибутивах Linux. В этом разделе я расскажу о некоторых проблемах, с которыми вы можете столкнуться при запуске Selenium в автономном режиме с использованием веб-драйвера Chrome.

По умолчанию веб-браузер Google Chrome выполняет большую часть работы в песочнице (выполняет многие операции в изолированной среде). Это может вызвать проблемы при запуске Selenium в автономном режиме с использованием веб-драйвера Chrome. Вы можете отключить песочницу для Google Chrome с помощью -без песочницы флаг.

Чтобы добавить -без песочницы флаг, добавьте следующую строку перед инициализацией драйвера Selenium Chrome с помощью webdriver.Хром() метод (строка 8 в ex01.ру Скрипт Python).

chromeOptions.add_argument ("- без песочницы")

У вас могут возникнуть проблемы с выполнением определенных вещей в веб-браузере Google Chrome из Selenium, таких как создание снимков экрана веб-сайта и т. Д. Это может произойти из-за того, что в автономном режиме Google Chrome может установить неправильное разрешение виртуального экрана. Итак, ваш сайт может выглядеть некорректно. Вы можете установить желаемое разрешение виртуального экрана для веб-браузера Google Chrome в автономном режиме с помощью -размер окна параметр командной строки.

Например, чтобы установить ширину виртуального экрана на 1280 пикселей и высота до 720 пикс, добавить -размер окна параметр командной строки перед инициализацией драйвера Selenium Chrome с помощью webdriver.Хром() метод (строка 8 в ex01.ру Скрипт Python) следующим образом:

chromeOptions.add_argument ("- размер окна = 1280,720")

На вашем сервере может не быть установлен графический процессор или на нем может быть графический процессор, который веб-браузер Google Chrome не знает, как использовать. По умолчанию Google Chrome должен автоматически отключать ускорение графического процессора, если графический процессор недоступен или если доступен неподдерживаемый графический процессор. В некоторых случаях он может этого не сделать. В этом случае Selenium не сможет запустить веб-браузер Google Chrome в безголовом режиме. Чтобы решить эту проблему, вам необходимо отключить ускорение графического процессора с помощью -disable-gpu флаг.

Чтобы добавить -disable-gpu флаг, добавьте следующую строку перед инициализацией драйвера Selenium Chrome с помощью webdriver.Хром() метод (строка 8 в ex01.ру Скрипт Python).

chromeOptions.add_argument («- disable-gpu»)

Заключение:

В этой статье я показал вам, как настроить Selenium в автономном режиме с помощью веб-драйвера Chrome. Я рассмотрел основы, которые помогут вам начать автоматизацию браузера Selenium без управления, веб-тестирование и парсинг веб-страниц.

Я также рассмотрел некоторые аргументы / флаги командной строки Google Chrome, которые вы можете использовать для решения некоторых проблем, которые могут возникнуть при запуске Selenium в безголовом режиме с использованием веб-драйвера Chrome.

Доступно множество других параметров командной строки Google Chrome, которые я не рассматривал в этой статье. Эти параметры командной строки могут быть полезны для вашего проекта. Вы можете найти все поддерживаемые параметры командной строки Google Chrome в списке переключателей командной строки Chromium на странице Питера Беверлоо.

Лучшие приложения для сопоставления геймпадов для Linux
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил...
Полезные инструменты для геймеров Linux
Если вам нравится играть в игры на Linux, скорее всего, вы использовали приложения и утилиты, такие как Wine, Lutris и OBS Studio, для улучшения игров...
Игры HD Remastered для Linux, ранее не выпускавшиеся для Linux
Многие разработчики и издатели игр придумывают HD-ремастеры старых игр, чтобы продлить жизнь франшизы, порадовать фанатов, требующих совместимости с с...