Как да намерим елемент по текст със селен

How Find Element Text With Selenium



Намирането и избирането на елементи от уеб страницата е ключът към изстъргването на уеб със Selenium. Можете да избирате елементи, като използвате име на маркер, ID, име на клас, XPath селектор, CSS селектор и т.н. в Selenium. Можете също така да изберете елементи със специфичен текст със Selenium. Това е полезно за лесно избиране на връзки и бутони от уеб страницата. Дори ако структурата на страницата се промени, стига текстът на елемента на уеб страницата да е същият, вашият селектор трябва да работи добре. Това е предимството при избора на връзки и бутони с използване на текст в Selenium.

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







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

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



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

За да изпълните изискванията 4, 5 и 6, прочетете моята статия Въведение в селена в Python 3 .



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





Настройване на директория на проекта:

За да поддържате всичко организирано, създайте нова директория на проекта selenium-text-select/ както следва:

$mkdir -пвselenium-text-select/шофьори



Придвижете се до selenium-text-select/ директория на проекта, както следва:

$CDselenium-text-select/

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

$virtualenv .venv

Активирайте виртуалната среда, както следва:

$източник.venv/съм/активирате

Инсталирайте библиотеката на Selenium Python, използвайки PIP3, както следва:

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

Изтеглете и инсталирайте всички необходими уеб драйвери в шофьори/ директория на проекта. Обясних процеса на изтегляне и инсталиране на уеб драйвери в моята статия Въведение в селена в Python 3 .

Намиране на елементи по текст:

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

Ще започна с най -простия пример за избор на елементи на уеб страницата по текст, избор на връзки от уеб страницата.

В страницата за вход на facebook.com имаме връзка Забравена сметка? Както можете да видите на екрана по -долу. Нека изберете тази връзка със Selenium.

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

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове
отселен.уеб драйвер.често срещани.от вносОт
от време вноссън
браузър=уеб драйвер.Chrome(executable_path='./drivers/chromedriver')
браузър.вземете('https://www.facebook.com/')
ForgotAccountLink=браузър.find_element(От.XPATH, '
//*[text () = 'Забравена сметка?'] '
)
ForgotAccountLink.send_keys(Ключове.ENTER)

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

Ред 1-4 импортира всички необходими компоненти в програмата Python.

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

Ред 8 казва на браузъра да зареди уебсайта facebook.com.

Ред 10 намира връзката с текст Забравена сметка? Използване на селектора XPath. За това използвах селектора XPath //*[text () = ’Забравена сметка?’] .

Селекторът XPath започва с //, което означава, че елементът може да бъде навсякъде на страницата. The * символът указва на Selenium да избере всеки маркер ( да се или стр или педя, и т.н.), което отговаря на условието в квадратните скоби [] . Тук условието е, текстът на елемента е равен на Забравена сметка?

The текст() Функцията XPath се използва за получаване на текста на елемент.

Например, текст() се завръща Здравей свят ако избере следния HTML елемент.

< да се href='http://dummysite.com'>Здравей свят</ да се >

Линия 11 изпраща натискане на клавиша към Забравена сметка? Връзка.

Стартирайте скрипта на Python ex01.py със следната команда:

$ python ex01.py

Както можете да видите, уеб браузърът намира, избира и натиска ключ на Забравена сметка? Връзка.

The Забравена сметка? Връзката води браузъра към следната страница.

По същия начин можете лесно да търсите елементи, които имат желаната стойност на атрибута.

Тук, Влизам бутонът е вход елемент, който има стойност атрибут Влизам . Нека да видим как да изберем този елемент по текст.

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

отселенвносуеб драйвер
отселен.уеб драйвер.често срещани.ключове вносКлючове
отселен.уеб драйвер.често срещани.от вносОт
от време вноссън
браузър=уеб драйвер.Chrome(executable_path='./drivers/chromedriver')
браузър.вземете('https://www.facebook.com/')
сън(5)
emailInput=браузър.find_element(От.XPATH, '// вход [@id =' имейл ']')
passwordInput=браузър.find_element(От.XPATH, '// вход [@id =' pass ']')
loginButton=браузър.find_element(От.XPATH, '//*[@value =' Вход ']')
emailInput.send_keys('[защитен имейл]')
сън(5)
passwordInput.send_keys('секретен пропуск')
сън(5)
loginButton.send_keys(Ключове.ENTER)

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

Ред 1-4 импортира всички необходими компоненти.

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

Ред 8 казва на браузъра да зареди уебсайта facebook.com.

Всичко се случва толкова бързо, след като стартирате скрипта. И така, използвах спя () функционира многократно ex02.py за забавяне на команди на браузъра. По този начин можете да наблюдавате как работи всичко.

Ред 11 намира текстовото поле за въвеждане на имейл и съхранява препратка към елемента в emailInput променлива.

Ред 12 намира текстовото поле за въвеждане на имейл и съхранява препратка към елемента в emailInput променлива.

Ред 13 намира входния елемент, който има атрибута стойност на Влизам използвайки селектора XPath. За това използвах селектора XPath //*[@value = 'Вход'] .

Селекторът XPath започва с // . Това означава, че елементът може да бъде навсякъде на страницата. The * символът указва на Selenium да избере всеки маркер ( вход или стр или педя, и т.н.), което отговаря на условието в квадратните скоби [] . Тук условието е атрибутът на елемента стойност е равно на Влизам .

Ред 15 изпраща входа[защитен имейл]към текстовото поле за въвеждане на имейл, а ред 16 забавя следващата операция.

Ред 18 изпраща входния секретен пропуск към текстовото поле за въвеждане на парола, а ред 19 забавя следващата операция.

Линия 21 изпраща натиснете клавиша до бутона за вход.

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

$ python3 ex02.py

Както можете да видите, текстовите полета за имейл и парола са пълни с нашите фиктивни стойности, а Влизам бутонът е натиснат.

След това страницата преминава към следната страница.

Намиране на елементи по частичен текст:

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

В примера, ex01.py , Търсих елемента на връзката, който има текста Забравена сметка? . Можете да търсите в същия елемент на връзката, като използвате частичен текст, като например Забравено съгл . За да направите това, можете да използвате съдържа() XPath функция, както е показано в ред 10 на ex03.py . Останалите кодове са същите като в ex01.py . Резултатите ще бъдат същите.

В ред 10 на ex03.py , използваното условие за избор съдържа (източник, текст) XPath функция. Тази функция приема 2 аргумента, източник, и текст .

The съдържа() функцията проверява дали текст даден във втория аргумент частично съвпада с източник стойност в първия аргумент.

Източникът може да бъде текстът на елемента ( текст() ) или стойността на атрибута на елемента ( @attr_name ).

В ex03.py , текстът на елемента се проверява.

Друга полезна функция XPath за намиране на елементи от уеб страницата с помощта на частичен текст е започва с (източник, текст) . Тази функция има същите аргументи като съдържа() функция и се използва по същия начин. Единствената разлика е, че започва с() функция проверява дали вторият аргумент текст е началният низ на първия аргумент източник .

Преписах примера ex03.py за търсене на елемента, за който текстът започва Забравена, както можете да видите в ред 10 на ex04.py . Резултатът е същият като в ex02 и ex03.py .

Аз също съм пренаписал ex02.py така че да търси входния елемент, за който стойност атрибут започва с Дневник, както можете да видите в ред 13 на ex05.py . Резултатът е същият като в ex02.py .

Заключение:

В тази статия ви показах как да намерите и изберете елементи от уеб страници по текст с библиотеката Selenium Python. Сега трябва да можете да намерите елементи от уеб страници по конкретен текст или частичен текст с библиотеката Selenium Python.