Увод у селен у Питхону 3

Introduction Selenium Python 3



Селениум је оквир који се користи за тестирање веб апликација. Селениум аутоматизује прегледач, као што су Цхроме или Фирефок, за покретање тестова на жељеној веб локацији. Селен је такође веома моћан алат за стругање веба. Селениум подржава ЈаваСцрипт и све савремене функције прегледача. Овај алат је веома ефикасан у извлачењу информација са веб локација.

Овај чланак ће вам показати како да подесите Селениум на дистрибуцији Линука (тј. Убунту), као и како да извршите основну веб аутоматизацију и уклањање веба помоћу библиотеке Селениум Питхон 3.







Предуслови

Да бисте испробали команде и примере коришћене у овом чланку, морате имати следеће:



1) Линук дистрибуција (по могућности Убунту) инсталирана на вашем рачунару.
2) Питхон 3 инсталиран на вашем рачунару.
3) ПИП 3 инсталиран на вашем рачунару.
4) Гоогле Цхроме или Фирефок веб прегледач инсталиран на вашем рачунару.



Можете пронаћи многе чланке о овим темама на адреси ЛинукХинт.цом . Обавезно погледајте ове чланке ако вам је потребна додатна помоћ.





Припрема виртуелног окружења Питхон 3 за пројекат

Виртуелно окружење Питхон се користи за креирање изолованог директоријума Питхон пројекта. Питхон модули које инсталирате помоћу ПИП -а биће инсталирани само у директоријуму пројекта, а не глобално.

Питхон виртуаленв Модул се користи за управљање Питхон виртуелним окружењима.



Можете инсталирати Питхон виртуаленв модул глобално користећи ПИП 3, како следи:

$ судо пип3 инсталирајте виртуаленв

ПИП3 ће преузети и глобално инсталирати све потребне модуле.

У овом тренутку, Питхон виртуаленв модул треба инсталирати глобално.

Креирајте директориј пројекта питхон-селениум-басиц/ у вашем тренутном радном директоријуму, на следећи начин:

$ мкдир -пв питхон-селениум-басиц/дриверс

Идите до новоствореног директоријума пројекта питхон-селениум-басиц/ , као што следи:

$ЦДпитхон-селениум-басиц/

Направите Питхон виртуелно окружење у директоријуму пројекта помоћу следеће команде:

$ виртуаленв.енв

Питхон виртуелно окружење сада треба да се створи у директоријуму вашег пројекта. '

Активирајте Питхон виртуелно окружење у директоријуму пројекта помоћу следеће команде:

$ извор.енв/бин/активирај

Као што видите, Питхон виртуелно окружење је активирано за овај директоријум пројекта.

Инсталирање библиотеке Селениум Питхон

Библиотека Селениум Питхон доступна је у званичном Питхон ПиПИ спремишту.

Ову библиотеку можете инсталирати помоћу ПИП 3, на следећи начин:

$ пип3 инсталирајте селен

Библиотека Селениум Питхон би сада требала бити инсталирана.

Сада када је библиотека Селениум Питхон инсталирана, следећа ствар коју морате да урадите је да инсталирате веб управљачки програм за ваш омиљени веб прегледач. У овом чланку ћу вам показати како да инсталирате Фирефок и Цхроме веб управљачке програме за Селениум.

Инсталирање управљачког програма Фирефок Гецко

Фирефок Гецко управљачки програм вам омогућава да контролишете или аутоматизујете Фирефок веб прегледач користећи Селениум.

Да бисте преузели управљачки програм Фирефок Гецко, посетите ГитХуб објављује страницу мозилла/гецкодривер из веб прегледача.

Као што видите, в0.26.0 је најновија верзија Фирефок Гецко управљачког програма у време писања овог чланка.

Да бисте преузели Фирефок Гецко управљачки програм, помакните се према доље и кликните на архиву Линук гецкодривер тар.гз, овисно о архитектури вашег оперативног система.

Ако користите 32-битни оперативни систем, кликните на гецкодривер-в0.26.0-линук32.тар.гз линк.

Ако користите 64-битни оперативни систем, кликните на гецкодривер-в0.26.0-линукк64.тар.гз линк.

У мом случају, преузећу 64-битну верзију управљачког програма Фирефок Гецко.

Ваш прегледач би требало да вас затражи да сачувате архиву. Изаберите Сними документ а затим кликните У реду .

Архиву управљачког програма Фирефок Гецко треба преузети у ~/Преузимања именик.

Издвојите гецкодривер-в0.26.0-линук64.тар.гз архива из ~/Преузимања директоријум у возачи/ директоријуму вашег пројекта уносом следеће наредбе:

$катран -кзф~/Преузимања/гецкодривер-в0.26.0-линук64.тар.гзвозачи/

Када се архива управљачког програма Фирефок Гецко издвоји, нова је возач гекона бинарну датотеку треба креирати у возачи/ директоријуму вашег пројекта, као што можете видети на слици испод.

Тестирање управљачког програма Селениум Фирефок Гецко

У овом одељку ћу вам показати како да подесите своју прву Селениум Питхон скрипту да бисте тестирали да ли Фирефок Гецко управљачки програм ради.

Прво отворите директоријум пројекта питхон-селениум-басиц/ са вашим омиљеним ИДЕ -ом или уређивачем. У овом чланку ћу користити Висуал Студио Цоде.

Креирајте нову Питхон скрипту ек01.пи , и откуцајте следеће редове у скрипту.

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви
фром време увозспавај
прегледач=вебдривер.Фирефок(екецутабле_патх='./дриверс/гецкодривер')
прегледач.добити(„хттп://ввв.гоогле.цом“)
спавај(5)
прегледач.одустати()

Када завршите, сачувајте ек01.пи Питхон скрипта.

Објаснићу код у каснијем одељку овог чланка.

Следећа линија конфигурише Селениум да користи Фирефок Гецко управљачки програм из возачи/ директоријум вашег пројекта.

Да бисте проверили да ли управљачки програм Фирефок Гецко ради са Селениум -ом, покрените следеће ек01.пи Питхон скрипта:

$ питхон3 ек01.пи

Фирефок веб прегледач би требао аутоматски посетити Гоогле.цом и затворити се након 5 секунди. Ако се то догоди, управљачки програм Селениум Фирефок Гецко ради исправно.

Инсталирање Цхроме веб управљачког програма

Цхроме веб управљачки програм вам омогућава да контролишете или аутоматизујете веб прегледач Гоогле Цхроме користећи Селениум.

Морате да преузмете исту верзију Цхроме веб управљачког програма као и веб прегледач Гоогле Цхроме.

Да бисте пронашли број верзије Гоогле Цхроме веб прегледача, посетите цхроме: // сеттингс/хелп у Гоогле Цхроме -у. Број верзије треба да буде у О Цхроме -у одељак, као што можете видети на слици испод.

У мом случају, број верзије је 83.0.4103.116 . Прва три дела броја верзије ( 83.0.4103 , у мом случају) морају одговарати прва три дела броја верзије Цхроме веб управљачког програма.

Да бисте преузели Цхроме веб управљачки програм, посетите званична страница за преузимање управљачког програма Цхроме .

У Цуррент Релеасес одељак, Цхроме веб управљачки програм за најновија издања веб прегледача Гоогле Цхроме биће доступан, као што можете видети на слици испод.

Ако верзија Гоогле Цхроме -а коју користите није у Цуррент Релеасес одељак, померите се мало надоле и требало би да пронађете жељену верзију.

Када кликнете на исправну верзију Цхроме веб управљачког програма, требало би да вас одведе на следећу страницу. Кликните на цхромедривер_линук64.зип линк, како је наведено на слици испод.

Архиву Цхроме веб управљачког програма сада треба преузети.

Архиву Цхроме веб управљачког програма сада треба преузети у ~/Преузимања именик.

Можете извући цхромедривер-линук64.зип архива из ~/Преузимања директоријум у возачи/ директоријуму вашег пројекта са следећом командом:

$ унзип~/Преузимања/цхромедривер_линук64.зип-д возачи/

Када се архива Цхроме веб управљачког програма извади, нова хромирани управљач бинарну датотеку треба креирати у возачи/ директоријуму вашег пројекта, као што можете видети на слици испод.

Тестирање Селениум Цхроме управљачког програма за веб

У овом одељку ћу вам показати како да подесите своју прву скрипту Селениум Питхон да бисте проверили да ли Цхроме веб управљачки програм ради.

Прво креирајте нову Питхон скрипту ек02.пи , и откуцајте следеће редове кодова у скрипту.

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви
фром време увозспавај
прегледач=вебдривер.Хром(екецутабле_патх='./дриверс/цхромедривер')
прегледач.добити(„хттп://ввв.гоогле.цом“)
спавај(5)
прегледач.одустати()

Када завршите, сачувајте ек02.пи Питхон скрипта.

Објаснићу код у каснијем одељку овог чланка.

Следећи ред конфигурише Селениум да користи Цхроме веб управљачки програм из возачи/ директоријум вашег пројекта.

Да бисте тестирали да ли Цхроме веб управљачки програм ради са Селениум -ом, покрените ек02.пи Питхон скрипта, како следи:

$ питхон3 ек01.пи

Гоогле Цхроме веб прегледач би требао аутоматски посетити Гоогле.цом и затворити се након 5 секунди. Ако се то догоди, управљачки програм Селениум Фирефок Гецко ради исправно.

Основе стругања Веба са селеном

Од сада ћу користити веб прегледач Фирефок. Такође можете користити Цхроме, ако желите.

Основна скрипта Селениум Питхон би требало да изгледа као скрипта приказана на слици испод.

Прво, увезите Селениум вебдривер од селена модул.

Затим увезите Кључеви фром селениум.вебдривер.цоммон.кеис . Ово ће вам помоћи да шаљете притиске на тастатури у прегледач који аутоматизујете из Селениум -а.

Следећи ред ствара а прегледач објекат за веб прегледач Фирефок користећи Фирефок Гецко управљачки програм (Вебдривер). Помоћу овог објекта можете контролисати радње прегледача Фирефок.

Да учитам веб локацију или УРЛ (учитаваћу веб локацију хттпс://ввв.дуцкдуцкго.цом ), звати добити() метода прегледач објекта у прегледачу Фирефок.

Користећи Селениум, можете да напишете своје тестове, извршите скидање са Интернета и на крају затворите прегледач помоћу одустати() метода прегледач објекат.

Изнад је основни изглед Селениум Питхон скрипте. Ове редове ћете писати у свим својим Селениум Питхон скриптама.

Пример 1: Штампање наслова веб странице

Ово ће бити најлакши пример о коме се расправља помоћу селена. У овом примеру одштампаћемо наслов веб странице коју ћемо посетити.

Креирајте нову датотеку ек04.пи и унесите следеће редове кодова у њега.

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви

прегледач=вебдривер.Фирефок(екецутабле_патх='./дриверс/гецкодривер')

прегледач.добити('хттпс://ввв.дуцкдуцкго.цом')
принт('Наслов: %с'% прегледач.наслов)
прегледач.одустати()

Када завршите, сачувајте датотеку.

Овде, бровсер.титле се користи за приступ наслову посећене веб странице и принт () функција ће се користити за штампање наслова у конзоли.

Након покретања ек04.пи скрипта, требало би:

1) Отворите Фирефок
2) Учитајте жељену веб страницу
3) Преузмите наслов странице
4) Одштампајте наслов на конзоли
5) И на крају, затворите прегледач

Као што видите, ек04.пи сцрипт је лепо одштампао наслов веб странице у конзоли.

$ питхон3 ек04.пи

Пример 2: Штампање наслова више веб страница

Као и у претходном примеру, можете користити исти метод за штампање наслова више веб страница помоћу Питхон петље.

Да бисте разумели како ово функционише, креирајте нову Питхон скрипту ек05.пи и откуцајте следеће редове кода у скрипту:

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви

прегледач=вебдривер.Фирефок(екецутабле_патх='./дриверс/гецкодривер')


урл= ['хттпс://ввв.дуцкдуцкго.цом', „хттпс://линукхинт.цом“, „хттпс://иахоо.цом“]
заурлуурл:
прегледач.добити(урл)
принт('Наслов: %с'% прегледач.наслов)
прегледач.одустати()

Када завршите, сачувајте Питхон скрипту ек05.пи .

Овде, урл листа чува УРЛ сваке веб странице.

ДО за лооп се користи за понављање кроз урл ставке листе.

На свакој итерацији, Селениум говори прегледачу да посети урл и добити наслов веб странице. Када Селениум издвоји наслов веб странице, штампа се у конзоли.

Покрените Питхон скрипту ек05.пи , и требало би да видите наслов сваке веб странице у урл листа.

$ питхон3 ек05.пи

Ово је пример како Селениум може да изврши исти задатак са више веб страница или веб локација.

Пример 3: Издвајање података са веб странице

У овом примеру показаћу вам основе вађења података са веб страница помоћу Селениум -а. Ово је такође познато и као стругање веба.

Прво посетите Рандом.орг линк из Фирефока. Страница би требало да генерише насумични низ, као што можете видети на слици испод.

Да бисте извукли податке насумичног низа помоћу Селениум -а, морате знати и ХТМЛ приказ података.

Да бисте видели како су подаци случајног низа представљени у ХТМЛ -у, изаберите податке насумичног низа и притисните десни тастер миша (РМБ) и кликните на Прегледајте елемент (К) , како је назначено на слици испод.

ХТМЛ приказ података би требао бити приказан у Инспекторе картицу, као што можете видети на слици испод.

Такође можете кликнути на Икона провере ( ) да бисте прегледали податке са странице.

Кликните на икону инспекције () и задржите показивач изнад података случајног низа које желите да издвојите. ХТМЛ приказ података треба приказати као и раније.

Као што видите, подаци насумичног низа су умотани у ХТМЛ за ознаку и садржи класу података .

Сада када знамо ХТМЛ приказ података које желимо да издвојимо, креираћемо Питхон скрипту за издвајање података помоћу Селениум -а.

Креирајте нову Питхон скрипту ек06.пи и откуцајте следеће редове кодова у скрипту

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви

прегледач=вебдривер.Фирефок(екецутабле_патх='./дриверс/гецкодривер')

прегледач.добити('хттпс://ввв.рандом.орг/стрингс/?нум=1&лен=20&дигитс
= укључено & уппералпха = укључено & ловералпха = укључено & јединствено = укључено & формат = хтмл & рнд = нев '
)

датаЕлемент=прегледач.финд_елемент_би_цсс_селецтор('пре.дата')
принт(датаЕлемент.текст)
прегледач.одустати()

Када завршите, сачувајте ек06.пи Питхон скрипта.

Овде, бровсер.гет () метода учитава веб страницу у прегледачу Фирефок.

Тхе бровсер.финд_елемент_би_цсс_селецтор () метход претражује ХТМЛ код странице за одређени елемент и враћа га.

У овом случају, елемент би био пре.дата , за ознака која има назив класе података .

Испод пре.дата елемент је ускладиштен у датаЕлемент променљива.

Скрипта затим штампа текстуални садржај изабраног пре.дата елемент.

Ако покренете ек06.пи Питхон скрипта, требало би да издвоји случајне низове података са веб странице, као што можете видети на слици испод.

$ питхон3 ек06.пи

Као што видите, сваки пут када покренем ек06.пи Питхон скрипта, издваја различите податке насумичног низа са веб странице.

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

Претходни пример вам је показао како да извучете један елемент података са веб странице помоћу Селениум -а. У овом примеру ћу вам показати како да користите Селениум за издвајање листе података са веб странице.

Прво посетите рандом-наме-генератор.инфо из вашег Фирефок веб прегледача. Ова веб локација ће генерисати десет насумичних имена сваки пут када поново учитате страницу, као што можете видети на слици испод. Наш циљ је да издвојимо ова насумична имена помоћу селена.

Ако помније прегледате листу имена, видећете да је то сређена листа ( умрети ознака). Тхе умрети ознака такође укључује назив класе намеЛист . Сваки од насумичних имена представљен је као ставка листе ( у ознака) унутар умрети таг.

Да бисте издвојили ова насумична имена, креирајте нову скрипту Питхон ек07.пи и откуцајте следеће редове кодова у скрипту.

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви

прегледач=вебдривер.Фирефок(екецутабле_патх='./дриверс/гецкодривер')

прегледач.добити('хттп://рандом-наме-генератор.инфо/')

намеЛист=прегледач.финд_елементс_би_цсс_селецтор('ол.намеЛист ли')

заимеунамеЛист:
принт(име.текст)

прегледач.одустати()

Када завршите, сачувајте ек07.пи Питхон скрипта.

Овде, бровсер.гет () метода учитава веб страницу генератора насумичних имена у прегледач Фирефок.

Тхе бровсер.финд_елементс_би_цсс_селецтор () метода користи ЦСС селектор ол.намеЛист ли да пронађе све у елементи унутар умрети ознака са именом класе намеЛист . Сачувао сам све одабране у елементи у намеЛист променљива.

ДО за лооп се користи за понављање кроз намеЛист листа у елементи. У свакој итерацији садржај у елемент је одштампан на конзоли.

Ако покренете ек07.пи Питхон скрипта, она ће преузети сва случајна имена са веб странице и одштампати је на екрану, као што можете видети на слици испод.

$ питхон3 ек07.пи

Ако скрипту покренете други пут, требало би да врати нову листу насумичних корисничких имена, као што можете видети на слици испод.

Пример 5: Подношење обрасца - Тражење на ДуцкДуцкГо -у

Овај пример је једноставан као и први пример. У овом примеру ћу посетити ДуцкДуцкГо претраживач и претраживати термин селен хк помоћу селена.

Прво, посетите ДуцкДуцкГо претраживач из веб прегледача Фирефок.

Ако прегледате поље за унос претраге, оно би требало да има ид сеарцх_форм_инпут_хомепаге , као што можете видети на слици испод.

Сада, креирајте нову Питхон скрипту ек08.пи и откуцајте следеће редове кодова у скрипту.

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви
прегледач=вебдривер.Фирефок(екецутабле_патх='./дриверс/гецкодривер')
прегледач.добити('хттпс://дуцкдуцкго.цом/')
сеарцхИнпут=прегледач.финд_елемент_би_ид('сеарцх_форм_инпут_хомепаге')
сеарцхИнпут.сенд_кеис('селен хк'+ Кључеви.ЕНТЕР)

Када завршите, сачувајте ек08.пи Питхон скрипта.

Овде, бровсер.гет () метход учитава почетну страницу ДуцкДуцкГо претраживача у Фирефок веб прегледачу.

Тхе бровсер.финд_елемент_би_ид () метход бира улазни елемент са ид -ом сеарцх_форм_инпут_хомепаге и складишти га у сеарцхИнпут променљива.

Тхе сеарцхИнпут.сенд_кеис () метода се користи за слање података о притиску тастера у поље за унос. У овом примеру шаље низ селен хк , а тастер Ентер се притиска помоћу Кључеви.ЕНТЕР константан.

Чим ДуцкДуцкГо претраживач прими тастер Ентер ( Кључеви.ЕНТЕР ), тражи и приказује резултат.

Покренути ек08.пи Питхон скрипта, како следи:

$ питхон3 ек08.пи

Као што видите, претраживач Фирефок посетио је ДуцкДуцкГо претраживач.

Аутоматски је откуцано селен хк у текстуалном оквиру за претрагу.

Чим је прегледач примио тастер Ентер, притисните ( Кључеви.ЕНТЕР ), приказао је резултат претраге.

Пример 6: Подношење обрасца на В3Сцхоолс.цом

У примеру 5, ДуцкДуцкГо образац за претраживач је био лак. Све што је требало да урадите је да притиснете тастер Ентер. Али то неће бити случај за све поднете обрасце. У овом примеру ћу вам показати сложеније руковање обрасцима.

Прво посетите ХТМЛ Формс страница В3Сцхоолс.цом из Фирефок веб прегледача. Када се страница учита, требало би да видите пример обрасца. Ово је образац који ћемо предати у овом примеру.

Ако прегледате образац, Име поље за унос треба да има ид фнаме , Презиме поље за унос треба да има ид лнаме , и Дугме за слање требало би да има тип прихвати , као што можете видети на слици испод.

Да бисте послали образац помоћу Селениум -а, креирајте нову Питхон скрипту ек09.пи и откуцајте следеће редове кодова у скрипту.

фромселенаувозвебдривер
фромселена.вебдривер.заједнички.кључеве увозКључеви
прегледач=вебдривер.Фирефок(екецутабле_патх='./дриверс/гецкодривер')
прегледач.добити('хттпс://ввв.в3сцхоолс.цом/хтмл/хтмл_формс.асп')
фнаме=прегледач.финд_елемент_би_ид('фнаме')
фнаме.јасно()
фнаме.сенд_кеис('Схахриар')
лнаме=прегледач.финд_елемент_би_ид('лнаме')
лнаме.јасно()
лнаме.сенд_кеис('Сховон')
субмитБуттон=прегледач.финд_елемент_би_цсс_селецтор('инпут [типе =' субмит ']')
субмитБуттон.сенд_кеис(Кључеви.ЕНТЕР)

Када завршите, сачувајте ек09.пи Питхон скрипта.

Овде, бровсер.гет () метода отвара страницу ХТМЛ образаца В3сцхоолс у веб прегледачу Фирефок.

Тхе бровсер.финд_елемент_би_ид () метода проналази поља за унос према ид -у фнаме и лнаме и складишти их у фнаме и лнаме варијабле, респективно.

Тхе фнаме.цлеар () и лнаме.цлеар () методе бришу подразумевано име (Јохн) фнаме вредност и презиме (Срна) лнаме вредност из поља за унос.

Тхе фнаме.сенд_кеис () и лнаме.сенд_кеис () врсте метода Схахриар и Сховон у Име и Презиме поља за унос, респективно.

Тхе бровсер.финд_елемент_би_цсс_селецтор () метод бира Дугме за слање обрасца и складишти га у субмитБуттон променљива.

Тхе субмитБуттон.сенд_кеис () метода шаље тастер Ентер притиском на ( Кључеви.ЕНТЕР ) до Дугме за слање форме. Ова радња предаје образац.

Покренути ек09.пи Питхон скрипта, како следи:

$ питхон3 ек09.пи

Као што видите, образац је аутоматски послат са тачним подацима.

Закључак

Овај чланак би вам требао помоћи да започнете са тестирањем прегледача Селениум, веб аутоматизацијом и библиотекама за уклањање веба у Питхону 3. За више информација погледајте званична Селениум Питхон документација .