Селен

Стартиране на селен без глава с Chrome

Стартиране на селен без глава с Chrome
Ако искате да направите уеб автоматизация или бракуване на уеб с браузър Chrome, той по подразбиране изпълнява графичната версия на уеб браузъра Chrome. Не е проблем, когато стартирате скрипта си Selenium от графична работна среда на Linux (т.е.д., GNOME 3, KDE, XFCE4). Но ако искате да стартирате скрипта си Selenium в безглава среда (т.е.д., Ubuntu Server, CentOS / RHEL Server), където нямате инсталирана графична работна среда, това няма да работи.

За щастие можете да конфигурирате Selenium да стартира уеб браузъра Chrome в режим без глава. В този режим уеб браузърът Chrome ще работи без графичен потребителски интерфейс. И така, Selenium може да прави уеб автоматизация, бракуване на уеб, тестове на браузъри и т.н. използване на уеб браузъра Chrome в Linux сървъри, където не е инсталирана графична работна среда.

В тази статия ще ви покажа как да стартирате Selenium с уеб браузъра Chrome в режим без глава. Ще използвам библиотеката Selenium Python и ще пиша скриптове Selenium, използвайки езика за програмиране Python 3. И така, нека започнем.

Предпоставки:

За да изпробвате командите и примерите от тази статия, трябва да имате,

1) Линукс дистрибуция (за предпочитане Ubuntu), инсталирана на вашия компютър.
2) Python 3, инсталиран на вашия компютър.
3) PIP 3, инсталиран на вашия компютър.
4) Google Chrome, инсталиран на вашия компютър.

Можете да намерите много статии по тези теми в LinuxHint.com. Не забравяйте да ги проверите, ако имате нужда от помощ.

Подготовка на виртуалната среда на Python 3 за проекта:

Python Virtual Environment се използва за създаване на изолирана директория на проекти на Python. Модулите Python, които инсталирате с помощта на PIP, ще бъдат инсталирани само в директорията на проекта, а не глобално.

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

Можете да инсталирате Python virtualenv модул в световен мащаб, използвайки PIP 3, както следва:

$ sudo pip3 инсталира virtualenv

Python virtualenv трябва да се инсталира.

Създайте директория на проекта хром без глава / в текущата работна директория, както следва:

$ mkdir -pv хром-безглави / драйвери

Придвижете се до новосъздадената директория на проекта хром без глава / както следва:

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

Създайте виртуална среда на Python във вашата директория на проекта със следната команда:

$ virtualenv .venv

Виртуалната среда на Python трябва да бъде създадена в .venv / директория във вашата директория на проекта.

Активирайте виртуалната среда на Python на вашата директория на проекта със следната команда:

$ източник .venv / bin / активиране

Инсталиране на библиотека на Selenium Python:

Библиотеката на селен се предлага в официалното хранилище на Python PyPI.

Можете да инсталирате библиотека Selenium Python, използвайки PIP 3, както следва:

$ pip3 инсталиране на селен

Би трябвало да се инсталира библиотека на Selenium Python.

Инсталиране на уеб уеб драйвер на Chrome:

Chrome Web Driver ще ви позволи да контролирате или автоматизирате уеб браузъра Google Chrome от Selenium.

В този раздел ще ви покажа как да инсталирате уеб уеб драйвера на Chrome.

Първо отворете Google Chrome и посетете chrome: // settings / help.

След като страницата се зареди, трябва да намерите номера на версията на Google Chrome в Всичко за Chrome раздел. Обърнете внимание на първите 3 раздела от номера на версията, както е отбелязано на екранната снимка по-долу.

За да изтеглите Chrome Web Driver, посетете официалната страница за изтегляне на Chrome Driver.

В Текущи версии раздел, Chrome Web Driver за най-актуалните версии на уеб браузъра Google Chrome трябва да е налице, както можете да видите на екранната снимка по-долу. Една от актуалните версии на уеб браузъра на Chrome трябва да има съвпадащ номер на версията с вашия уеб браузър Google Chrome. Първите 3 секции от номера на версията на Chrome Web Driver и уеб браузъра Google Chrome трябва да съвпадат.

Ако версията, която търсите, не е в Текущи версии раздела, превъртете малко надолу и бихте могли да го намерите.

След като щракнете върху номера на версията на Chrome Web Driver, той трябва да отвори страницата за изтегляне. Кликнете върху chromedriver_linux64.цип файл от тук.

Архивът на уеб уеб драйвера на Chrome трябва да бъде изтеглен.

Изтегленото chromedriver_linux64.цип файлът трябва да е във вашия ~ / Изтегляния директория.

$ ls -lh ~ / Изтегляния

Извлечете chromedriver_linux64.цип архив от ~ / Изтегляния директория към шофьори / директория на вашия проект, както следва:

$ unzip ~ / Downloads / chromedriver_linux64.zip -d драйвери /

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

Тестване на уеб уеб драйвер на Chrome в режим без глава:

В този раздел ще ви покажа как да стартирате Selenium с помощта на Chrome Driver в режим без глава.

Първо, създайте нов Python скрипт ex01.py в директорията на вашия проект и въведете следните редове кодове в него.

от webdriver за импортиране на селен
от селен.уеб драйвер.често срещани.ключове за импортиране
от селен.уеб драйвер.хром.опции за импортиране
chromeOptions = Опции ()
chromeOptions.без глава = Вярно
браузър = webdriver.Chrome (executable_path = "./ drivers / chromedriver ", options = chromeOptions)
браузър.get ("http: // linuxhint.com ")
print ("Заглавие:% s"% браузър.заглавие)
браузър.отказ ()

След като приключите, запазете ex01.py Python скрипт.

Тези редове импортират всички необходими неща от селен библиотека.

Както казах по-рано, по подразбиране драйверът на Chrome се опитва да стартира Google Chrome в графичен режим. За да стартираме Google Chrome в режим без глава, трябва да кажем на драйвера на Chrome да предаде някои допълнителни опции. Тази линия създава Настроики обект, който по-късно можем да предадем на уеб драйвера на Chrome.

Можете да стартирате Google Chrome в режим без глава, просто като зададете обезглавен собственост на chromeOptions възразяват срещу Вярно.

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

Можете да използвате a уеб драйвер.Chrome () метод за инициализиране / стартиране на уеб браузър на Google Chrome от Selenium. The изпълним_ път аргумент се използва, за да се каже на Selenium да използва хромедривър двоично от шофьори / директория на проекта. The настроики аргумент казва на Selenium да използва нашите потребителски опции chromeOptions.

След като Selenium стартира уеб браузър на Google Chrome с помощта на Selenium Chrome Web Driver, той връща a браузър обект. Можем да го използваме за управление на екземпляра на Google Chrome по-късно.

The браузър.получи () методът зарежда linuxhint.com уебсайт в уеб браузъра Google Chrome във фонов режим (в режим без глава).

След като страницата се зареди, браузър.заглавие имотът ще има заглавието на уебсайта. Питонът печат () метод отпечатва заглавието на уебсайта на конзолата.

Тогава браузър.изход () метод затваря уеб браузъра Google Chrome.

За да проверите дали Selenium може да работи в режим без глава, стартирайте скрипта на Python ex01.py както следва:

$ python3 ex01.py

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

Само за да ви покажа, че работи от Linux обезглавени сървъри (където не е инсталиран графичен потребителски интерфейс), стартирах скрипта на Python ex01.py на Ubuntu Server 20.04 LTS. Както можете да видите, скриптът работи добре.

Уеб изстъргване със селен в режим без глава с помощта на уеб драйвера на Chrome:

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

Първо посетете генератора на произволни имена.информация от Google Chrome или друг уеб браузър. Този уебсайт ще генерира 10 произволни имена всеки път, когато презаредите страницата, както можете да видите на екранната снимка по-долу. Нашата цел е да извлечем тези произволни имена, като използваме Селен в режим без глава.

За да разберете HTML структурата на списъка, трябва да отворите Инструмент за разработчици на Chrome. За целта натиснете десния бутон на мишката (RMB) на страницата и кликнете върху Огледайте или натиснете + + Аз.

Инструмент за разработчици на Chrome трябва да се отвори. Кликнете върху Икона за проверка () както е отбелязано на екранната снимка по-долу.

След това задръжте курсора на мишката върху списъка с Случайни имена. Списъкът трябва да бъде маркиран, както е маркиран на екранната снимка по-долу. След това натиснете левия бутон на мишката (LMB), за да изберете списъка.

HTML кода на списъка трябва да бъде подчертан в Елементи в раздела Инструмент за разработчици на Chrome. Тук списъкът с произволни имена е вътре в a div елемент. The div елементът има клас име резултати. Вътре в него имаме ол елемент с клас име списък с имена. Вътре в ол елемент, всяко от имената е в ли елемент.

От тук можем да кажем, че за да стигнем до ли тагове, трябва да следваме div.резултати> ол.nameList> li

И така, нашият CSS селектор ще бъде div.резултати ол.nameList li (просто заменете > знаци с празно пространство)

За извличане на тези произволни имена създайте нов Python скрипт ex02.py и въведете в него следните редове кодове.

от webdriver за импортиране на селен
от селен.уеб драйвер.често срещани.ключове за импортиране
от селен.уеб драйвер.хром.опции за импортиране
chromeOptions = Опции ()
chromeOptions.без глава = Вярно
браузър = webdriver.Chrome (executable_path = "./ drivers / chromedriver ", options = chromeOptions)
браузър.get ("http: // random-name-generator.информация / ")
nameList = браузър.find_elements_by_css_selector ('div.резултати ол.nameList li ')
за име в списък с имена:
печат (име.текст)
браузър.отказ ()

След като приключите, запазете ex02.py Python скрипт.

Обясних редовете 1-8 в по-ранния раздел на тази статия. Те са същите като в ex01.py.

Ред 10 зарежда уебсайта на генератора на произволни имена с помощта на браузър.получи () метод.

Ред 11 избира списъка с имена с помощта на браузър.find_elements_by_css_selector () метод. Този метод използва CSS селектора div.резултати ол.nameList li за да намерите списъка с имена. След това списъкът с имена се съхранява в списък с имена променлива.

В редове 13 и 14, а за цикъл се използва за итерация през списък с имена списък с ли елементи. Във всяка итерация съдържанието на ли елемент се отпечатва на конзолата.

Сега стартирайте скрипта на Python ex02.py както следва:

$ python3 ex02.py

Както можете да видите, скриптът на Python ex02.py извади всички произволни имена от уеб страницата.

Ако стартирате скрипта за втори път, той трябва да върне нов списък с произволни имена, както можете да видите на екранната снимка по-долу.

Проблеми, с които може да се сблъскате със селен в режим без глава:

Виждали сте по-рано, че стартирането на Selenium в режим без глава с помощта на драйвера на Chrome е толкова лесно, колкото настройването на chromeOptions.обезглавен флаг към Вярно.

Това решение може да не работи за вас при някои дистрибуции на Linux. В този раздел ще говоря за някои от проблемите, с които може да се сблъскате, докато стартирате Selenium в режим без глава, използвайки уеб драйвера на Chrome.

По подразбиране уеб браузърът Google Chrome прави много пясък (изпълнява много неща в изолирана среда). Това може да причини проблеми при стартиране на Selenium в режим без глава с помощта на уеб драйвера на Chrome. Можете да деактивирате пясъчника за Google Chrome, като използвате -без пясъчник флаг.

За да добавите -без пясъчник флаг, добавете следния ред, преди да инициализирате драйвера на Selenium Chrome, като използвате уеб драйвер.Chrome () метод (ред 8 в ex01.py Python скрипт).

chromeOptions.add_argument ("- без пясъчник")

Може да имате проблеми с извършването на определени неща в уеб браузъра Google Chrome от Selenium, като правене на екранни снимки на уебсайта и т.н. Това може да се случи, защото в режим без глава Google Chrome може да зададе неправилна разделителна способност на виртуалния екран. Така че вашият уебсайт може да не изглежда правилно. Можете да зададете желаната виртуална разделителна способност на екрана за уеб браузъра Google Chrome в режим без глава с помощта на -размер на прозореца опция на командния ред.

Например, за да зададете ширината на виртуалния екран на 1280 px и височина до 720 px, добавете -размер на прозореца опция на командния ред, преди да инициализирате драйвера на Selenium Chrome с помощта на уеб драйвер.Chrome () метод (ред 8 в ex01.py Python script), както следва:

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

Вашият сървър може да няма инсталиран GPU или може да има GPU, който уеб браузърът на Google Chrome няма да знае как да използва. По подразбиране Google Chrome трябва автоматично да деактивира ускорението на GPU, ако GPU не е наличен или ако е наличен неподдържан GPU. В някои случаи може да не успее да го направи. В този случай Selenium може да не успее да стартира уеб браузъра Google Chrome в режим без глава. За да разрешите този проблем, трябва да деактивирате ускорението на GPU с помощта на -disable-gpu флаг.

За да добавите -disable-gpu флаг, добавете следния ред, преди да инициализирате драйвера на Selenium Chrome, като използвате уеб драйвер.Chrome () метод (ред 8 в ex01.py Python скрипт).

chromeOptions.add_argument (“- disable-gpu”)

Заключение:

В тази статия ви показах как да настроите Селен в режим без глава с помощта на уеб драйвера на Chrome. Покрих основите, които ще ви помогнат да започнете с безглава автоматизация на браузъра Selenium, уеб тестване и изстъргване в мрежата.

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

Налични са много повече опции на командния ред на Google Chrome, които не разгледах в тази статия. Тези опции на командния ред могат да бъдат полезни за вашия проект. Можете да намерите всички поддържани опции на командния ред на Google Chrome в страницата Списък на превключвателите на командния ред на Chromium от Peter Beverloo.

Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...
Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...
Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...