Въведение в селена в Python 3

Introduction Selenium Python 3



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

Тази статия ще ви покаже как да настроите Selenium за вашата дистрибуция на Linux (т.е. Ubuntu), както и как да извършите основна уеб автоматизация и уеб бракуване с библиотеката Selenium Python 3.







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

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



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



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





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

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

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



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

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

PIP3 ще изтегли и глобално инсталира всички необходими модули.

В този момент Python virtualenv модулът трябва да бъде инсталиран в световен мащаб.

Създайте директория на проекта python-selenium-basic/ в текущата ви работна директория, както следва:

$ mkdir -pv python-selenium-basic/драйвери

Придвижете се до новосъздадената директория на проекта python-selenium-basic/ , както следва:

$CDpython-selenium-basic/

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

$ virtualenv.env

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

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

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

Както можете да видите, виртуалната среда Python е активирана за тази директория на проекта.

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

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

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

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

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

След като библиотеката Selenium Python е инсталирана, следващото нещо, което трябва да направите, е да инсталирате уеб драйвер за любимия си уеб браузър. В тази статия ще ви покажа как да инсталирате уеб драйверите на Firefox и Chrome за Selenium.

Инсталиране на драйвер за Firefox Gecko

Firefox Gecko Driver ви позволява да контролирате или автоматизирате уеб браузъра Firefox с помощта на Selenium.

За да изтеглите драйвера за Firefox Gecko, посетете GitHub пуска страница на mozilla/geckodriver от уеб браузър.

Както можете да видите, v0.26.0 е най -новата версия на Firefox Gecko Driver към момента на писане на тази статия.

За да изтеглите драйвера за Firefox Gecko, превъртете малко надолу и щракнете върху архива на geckodriver на Linux tar.gz в зависимост от архитектурата на вашата операционна система.

Ако използвате 32-битова операционна система, щракнете върху geckodriver-v0.26.0-linux32.tar.gz връзка.

Ако използвате 64-битова операционна система, щракнете върху geckodriver-v0.26.0-linuxx64.tar.gz връзка.

В моя случай ще изтегля 64-битовата версия на драйвера за Firefox Gecko.

Вашият браузър трябва да ви подкани да запазите архива. Изберете Запишете файла и след това щракнете Добре .

Архивът на Firefox Gecko Driver трябва да бъде изтеглен в ~/Изтегляния директория.

Извлечете geckodriver-v0.26.0-linux64.tar.gz архив от ~/Изтегляния директория към шофьори/ директорията на вашия проект, като въведете следната команда:

$катран -xzf~/Изтегляния/geckodriver-v0.26.0-linux64.tar.gz-° Сшофьори/

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

Тестване на драйвера за селен Firefox Gecko

В този раздел ще ви покажа как да настроите първия си скрипт на Selenium Python, за да проверите дали Firefox Gecko Driver работи.

Първо отворете директорията на проекта python-selenium-basic/ с любимата си IDE или редактор. В тази статия ще използвам Visual Studio Code.

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

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове
от време вноссън
браузър=уеб драйвер.Firefox(executable_path='./drivers/geckodriver')
браузър.вземете(„http://www.google.com“)
сън(5)
браузър.напусна()

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

Ще обясня кода в по -късен раздел на тази статия.

Следният ред конфигурира Selenium да използва драйвера за Firefox Gecko от шофьори/ директория на вашия проект.

За да проверите дали Firefox Gecko Driver работи със Selenium, изпълнете следното ex01.py Скрипт на Python:

$ python3 ex01.py

Уеб браузърът Firefox трябва автоматично да посети Google.com и да се затвори след 5 секунди. Ако това се случи, тогава Selenium Firefox Gecko Driver работи правилно.

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

Уеб драйверът на Chrome ви позволява да контролирате или автоматизирате уеб браузъра Google Chrome с помощта на Selenium.

Трябва да изтеглите същата версия на уеб уеб драйвера за Chrome като тази на вашия уеб браузър Google Chrome.

За да намерите номера на версията на вашия уеб браузър Google Chrome, посетете chrome: // настройки/помощ в Google Chrome. Номерът на версията трябва да бъде в Относно Chrome раздел, както можете да видите на екрана по -долу.

В моя случай номерът на версията е 83.0.4103.116 . Първите три части от номера на версията ( 83.0.4103 , в моя случай) трябва да съвпада с първите три части от номера на версията на Chrome Web Driver.

За да изтеглите уеб уеб драйвер за Chrome, посетете официалната страница за изтегляне на драйвер за Chrome .

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

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

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

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

Архивът на Chrome Web Driver сега трябва да бъде изтеглен в ~/Изтегляния директория.

Можете да извлечете chromedriver-linux64.zip архив от ~/Изтегляния директория към шофьори/ директория на вашия проект със следната команда:

$ разархивирайте~/Изтегляния/chromedriver_linux64.цип-d драйвери/

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

Тестване на Selenium Chrome уеб драйвер

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

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

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове
от време вноссън
браузър=уеб драйвер.Chrome(executable_path='./drivers/chromedriver')
браузър.вземете(„http://www.google.com“)
сън(5)
браузър.напусна()

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

Ще обясня кода в по -късен раздел на тази статия.

Следният ред конфигурира Selenium да използва уеб драйвера на Chrome от шофьори/ директория на вашия проект.

За да проверите дали уеб драйверът на Chrome работи със Selenium, стартирайте ex02.py Python скрипт, както следва:

$ python3 ex01.py

Уеб браузърът Google Chrome трябва автоматично да посети Google.com и да се затвори след 5 секунди. Ако това се случи, тогава Selenium Firefox Gecko Driver работи правилно.

Основи на изстъргването на уеб със селен

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

Основният скрипт на Selenium Python трябва да изглежда като скрипта, показан на екрана по -долу.

Първо импортирайте селена уеб драйвер от селен модул.

След това импортирайте Ключове от selenium.webdriver.common.keys . Това ще ви помогне да изпращате натискания на клавиатурата до браузъра, който автоматизирате от Selenium.

Следният ред създава a браузър обект за уеб браузъра Firefox с помощта на Firefox Gecko Driver (Webdriver). Можете да контролирате действията на браузъра Firefox с помощта на този обект.

За зареждане на уебсайт или URL адрес (ще зареждам уебсайта https://www.duckduckgo.com ), обадете се на get () метод на браузър обект във вашия браузър Firefox.

Използвайки Selenium, можете да напишете вашите тестове, да извършите отрязване на уеб и накрая да затворите браузъра, като използвате напусни () метод на браузър обект.

По -горе е основното оформление на скрипт на Selenium Python. Ще пишете тези редове във всичките си скриптове на Selenium Python.

Пример 1: Отпечатване на заглавието на уеб страница

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

Създайте новия файл ex04.py и въведете следните редове кодове в него.

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове

браузър=уеб драйвер.Firefox(executable_path='./drivers/geckodriver')

браузър.вземете('https://www.duckduckgo.com')
печат(„Заглавие: %s“% браузър.заглавие)
браузър.напусна()

След като приключите, запазете файла.

Тук, browser.title се използва за достъп до заглавието на посетената уеб страница и print () функция ще се използва за отпечатване на заглавието в конзолата.

След стартиране на ex04.py скрипт, той трябва:

1) Отворете Firefox
2) Заредете желаната от вас уеб страница
3) Изтеглете заглавието на страницата
4) Отпечатайте заглавието на конзолата
5) И накрая, затворете браузъра

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

$ python3 ex04.py

Пример 2: Отпечатване на заглавията на множество уеб страници

Както в предишния пример, можете да използвате същия метод за отпечатване на заглавието на множество уеб страници, използвайки цикъла на Python.

За да разберете как работи това, създайте новия скрипт на Python ex05.py и въведете следните редове код в скрипта:

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове

браузър=уеб драйвер.Firefox(executable_path='./drivers/geckodriver')


URL адреси= ['https://www.duckduckgo.com', 'https://linuxhint.com', „https://yahoo.com“]
заurlвURL адреси:
браузър.вземете(url)
печат(„Заглавие: %s“% браузър.заглавие)
браузър.напусна()

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

Тук, URL адреси списък запазва URL адреса на всяка уеб страница.

ДА СЕ за цикъл се използва за повторение през URL адреси елементи от списъка.

При всяка итерация Selenium казва на браузъра да посети url и да получите заглавието на уеб страницата. След като Selenium извлече заглавието на уеб страницата, тя се отпечатва в конзолата.

Стартирайте скрипта на Python ex05.py , и трябва да видите заглавието на всяка уеб страница в URL адреси списък.

$ python3 ex05.py

Това е пример за това как Selenium може да изпълнява същата задача с множество уеб страници или уебсайтове.

Пример 3: Извличане на данни от уеб страница

В този пример ще ви покажа основите на извличането на данни от уеб страници с помощта на Selenium. Това е известно още като изстъргване на уеб.

Първо посетете Random.org връзка от Firefox. Страницата трябва да генерира произволен низ, както можете да видите на екрана по -долу.

За да извлечете произволни низови данни с помощта на Selenium, трябва да знаете и HTML представянето на данните.

За да видите как данните от произволен низ са представени в HTML, изберете данните от произволен низ и натиснете десния бутон на мишката (RMB) и щракнете върху Проверка на елемента (Q) , както е отбелязано на екрана по -долу.

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

Можете също да кликнете върху Икона за инспекция ( ) за проверка на данните от страницата.

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

Както можете да видите, данните от произволен низ са опаковани в HTML за таг и съдържа класа данни .

Сега, когато знаем HTML представянето на данните, които искаме да извлечем, ще създадем скрипт на Python за извличане на данните с помощта на Selenium.

Създайте новия скрипт на Python ex06.py и въведете следните редове кодове в скрипта

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове

браузър=уеб драйвер.Firefox(executable_path='./drivers/geckodriver')

браузър.вземете('https://www.random.org/strings/?num=1&len=20&digits
= on & upperalpha = on & loweralpha = on & unique = on & format = html & rnd = new '
)

dataElement=браузър.find_element_by_css_selector('pre.data')
печат(dataElement.текст)
браузър.напусна()

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

Тук, browser.get () метод зарежда уеб страницата в браузъра Firefox.

The browser.find_element_by_css_selector () метод търси HTML кода на страницата за конкретен елемент и го връща.

В този случай елементът ще бъде пред.данни , за маркер, който има името на класа данни .

По -долу, пред.данни елемент е съхранен в dataElement променлива.

След това скриптът отпечатва текстовото съдържание на избраното пред.данни елемент.

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

$ python3 ex06.py

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

Пример 4: Извличане на списък с данни от уеб страница

Предишният пример ви показа как да извлечете един елемент от данни от уеб страница с помощта на Selenium. В този пример ще ви покажа как да използвате Selenium за извличане на списък с данни от уеб страница.

Първо посетете random-name-generator.info от вашия уеб браузър Firefox. Този уебсайт ще генерира десет произволни имена всеки път, когато презареждате страницата, както можете да видите на екрана по -долу. Нашата цел е да извлечем тези произволни имена с помощта на Selenium.

Ако разгледате по -отблизо списъка с имена, можете да видите, че това е подреден списък ( умират етикет). The умират етикетът включва и името на класа списък с имена . Всяко от случайните имена е представено като елемент от списъка ( при таг) вътре в умират етикет.

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

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове

браузър=уеб драйвер.Firefox(executable_path='./drivers/geckodriver')

браузър.вземете('http://random-name-generator.info/')

списък с имена=браузър.find_elements_by_css_selector('ol.nameList li')

заимевсписък с имена:
печат(име.текст)

браузър.напусна()

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

Тук, browser.get () метод зарежда уеб страницата за генериране на произволни имена в браузъра Firefox.

The browser.find_elements_by_css_selector () метод използва селектора на CSS ol.nameList li за да намерите всички при елементи вътре в умират маркер с име на класа списък с имена . Запазил съм всички избрани при елементи в списък с имена променлива.

ДА СЕ за цикъл се използва за повторение през списък с имена списък с при елементи. Във всяка итерация съдържанието на при елементът е отпечатан на конзолата.

Ако стартирате ex07.py Python скрипт, той ще извлече всички произволни имена от уеб страницата и ще го отпечата на екрана, както можете да видите на екрана по -долу.

$ python3 ex07.py

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

Пример 5: Изпращане на формуляр - Търсене в DuckDuckGo

Този пример е също толкова прост, колкото и първият пример. В този пример ще посетя търсачката DuckDuckGo и ще потърся термина селен hq използване на селен.

Първо, посетете Търсачка DuckDuckGo от уеб браузъра Firefox.

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

Сега създайте новия скрипт на Python ex08.py и въведете следните редове кодове в скрипта.

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове
браузър=уеб драйвер.Firefox(executable_path='./drivers/geckodriver')
браузър.вземете('https://duckduckgo.com/')
searchInput=браузър.find_element_by_id('search_form_input_homepage')
searchInput.send_keys('селен hq'+ Ключове.ENTER)

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

Тук, browser.get () метод зарежда началната страница на търсачката DuckDuckGo в уеб браузъра Firefox.

The browser.find_element_by_id () метод избира входния елемент с id search_form_input_homepage и го съхранява в searchInput променлива.

The searchInput.send_keys () метод се използва за изпращане на данни за натискане на клавиш към полето за въвеждане. В този пример той изпраща низ селен hq , и клавишът Enter се натиска с помощта на Ключове.ENTER постоянен.

Веднага щом търсачката DuckDuckGo получи клавиша Enter, натиснете ( Ключове.ENTER ), той търси и показва резултата.

Стартирайте ex08.py Python скрипт, както следва:

$ python3 ex08.py

Както можете да видите, уеб браузърът Firefox посети търсачката DuckDuckGo.

Той е въведен автоматично селен hq в текстовото поле за търсене.

Веднага щом браузърът получи клавиша Enter, натиснете ( Ключове.ENTER ), той показва резултата от търсенето.

Пример 6: Подаване на формуляр на W3Schools.com

В пример 5 подаването на формуляр за търсеща машина на DuckDuckGo беше лесно. Всичко, което трябваше да направите, е да натиснете клавиша Enter. Но това няма да е така за всички подадени формуляри. В този пример ще ви покажа по -сложно боравене с формуляри.

Първо посетете Страница с HTML формуляри на W3Schools.com от уеб браузъра Firefox. След като страницата се зареди, трябва да видите примерен формуляр. Това е формулярът, който ще представим в този пример.

Ако проверите формуляра, Първо име полето за въвеждане трябва да има идентификатор fname , Фамилия полето за въвеждане трябва да има идентификатор Име , и Бутон за изпращане трябва да има Тип Изпращане , както можете да видите на екрана по -долу.

За да изпратите този формуляр с помощта на Selenium, създайте новия скрипт на Python ex09.py и въведете следните редове кодове в скрипта.

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове
браузър=уеб драйвер.Firefox(executable_path='./drivers/geckodriver')
браузър.вземете(„https://www.w3schools.com/html/html_forms.asp“)
fname=браузър.find_element_by_id('fname')
fname.ясно()
fname.send_keys('Шахриар')
Име=браузър.find_element_by_id('lname')
Име.ясно()
Име.send_keys('Шовон')
submitButton=браузър.find_element_by_css_selector('input [type =' submit ']')
submitButton.send_keys(Ключове.ENTER)

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

Тук, browser.get () метод отваря страницата с HTML формуляри на W3schools в уеб браузъра Firefox.

The browser.find_element_by_id () метод намира полетата за въвеждане по идентификатор fname и Име и ги съхранява в fname и Име променливи, съответно.

The fname.clear () и lname.clear () методите изчистват името по подразбиране (Джон) fname стойност и фамилия (Doe) Име стойност от полетата за въвеждане.

The fname.send_keys () и lname.send_keys () тип методи Шахриар и Шовон в Първо име и Фамилия полета за въвеждане, съответно.

The browser.find_element_by_css_selector () метод избира Бутон за изпращане на формуляра и го съхранява в submitButton променлива.

The submitButton.send_keys () метод изпраща клавиша Enter натискане ( Ключове.ENTER ) към Бутон за изпращане на формата. Това действие изпраща формуляра.

Стартирайте ex09.py Python скрипт, както следва:

$ python3 ex09.py

Както можете да видите, формулярът е изпратен автоматично с правилните данни.

Заключение

Тази статия би трябвало да ви помогне да започнете с тестването на браузъра Selenium, уеб автоматизацията и библиотеките за скрап на уеб в Python 3. За повече информация вижте официална документация за Selenium Python .