Paano Makahanap ng Element sa pamamagitan ng Teksto sa Selenium

How Find Element Text With Selenium



Ang paghahanap at pagpili ng mga elemento mula sa web page ay ang susi sa pag-scrap ng web sa Selenium. Maaari kang pumili ng mga elemento gamit ang isang pangalan ng tag, ID, pangalan ng klase, tagapili ng XPath, tagapili ng CSS, atbp. Sa Selenium. Maaari mo ring piliin ang mga elemento na may isang tukoy na teksto sa Selenium. Kapaki-pakinabang ito para sa pagpili ng mga link at pindutan ng madali sa web page. Kahit na nagbago ang istraktura ng pahina, hangga't mananatiling pareho ang teksto ng elemento ng web page, ang iyong tagapili ay dapat na gumana nang maayos. Ito ang kalamangan ng pagpili ng mga link at pindutan gamit ang teksto sa Selenium.

Sa artikulong ito, ipapakita ko sa iyo kung paano hanapin at pumili ng mga elemento mula sa mga web page na gumagamit ng teksto sa Selenium kasama ang silid sa silid ng python ng Selenium. Kaya, magsimula na tayo.







Mga Pangangailangan:

Upang subukan ang mga utos at halimbawa ng artikulong ito, dapat mayroon kang:



  1. Isang pamamahagi ng Linux (mas mabuti ang Ubuntu) na naka-install sa iyong computer.
  2. Ang Python 3 na naka-install sa iyong computer.
  3. Naka-install ang PIP 3 sa iyong computer.
  4. Sawa virtualenv naka-install na package sa iyong computer.
  5. Ang mga browser ng Mozilla Firefox o Google Chrome na naka-install sa iyong computer.
  6. Dapat malaman kung paano i-install ang Firefox Gecko Driver o Chrome Web Driver.

Para sa pagtupad sa mga kinakailangan 4, 5, at 6, basahin ang aking artikulo Panimula sa Selenium sa Python 3 .



Maaari kang makahanap ng maraming mga artikulo sa iba pang mga paksa sa LinuxHint.com . Tiyaking suriin ang mga ito kung kailangan mo ng anumang tulong.





Pagse-set up ng isang Direktoryo ng Proyekto:

Upang panatilihing maayos ang lahat, lumikha ng isang bagong direktoryo ng proyekto selenium-text-select / tulad ng sumusunod:

$mkdir -pvselenium-text-select/mga driver



Mag-navigate sa selenium-text-select / direktoryo ng proyekto tulad ng sumusunod:

$CDselenium-text-select/

Lumikha ng isang virtual na kapaligiran ng Python sa direktoryo ng proyekto tulad ng sumusunod:

$virtualenv .venv

Isaaktibo ang virtual na kapaligiran tulad ng sumusunod:

$pinagmulan.venv/am/buhayin

I-install ang Selenium Python library gamit ang PIP3 tulad ng sumusunod:

$ pip3 i-install ang siliniyum

I-download at i-install ang lahat ng kinakailangang web driver sa mga driver / direktoryo ng proyekto. Ipinaliwanag ko ang proseso ng pag-download at pag-install ng mga web driver sa aking artikulo Panimula sa Selenium sa Python 3 .

Paghahanap ng Mga Elemento sa pamamagitan ng Teksto:

Sa seksyong ito, ipapakita ko sa iyo ang ilang mga halimbawa ng paghahanap at pagpili ng mga elemento ng web page sa pamamagitan ng teksto sa silid silid ng Selenium Python.

Magsisimula ako sa pinakasimpleng halimbawa ng pagpili ng mga elemento ng web page sa pamamagitan ng teksto, pagpili ng mga link mula sa web page.

Sa pahina ng pag-login ng facebook.com, mayroon kaming isang link Nakalimutang account? Tulad ng nakikita mo sa screenshot sa ibaba. Piliin natin ang link na ito sa Selenium.

Lumikha ng isang bagong script sa Python ex01.py at i-type ang mga sumusunod na linya ng mga code dito.

mula sasiliniyumangkatwebdriver
mula sasiliniyumwebdriver.pangkaraniwan.mga susi angkatMga susi
mula sasiliniyumwebdriver.pangkaraniwan.ni angkatNi
mula sa oras angkatmatulog
browser=webdriver.Chrome(maipapatupad na_path='./drivers/chromedriver')
browserkumuha ka('https://www.facebook.com/')
nakalimutanAccountLink=browserfind_element(NiXPATH, '
// * [text () = 'Nakalimutang account?'] '
)
nakalimutanAccountLink.send_keys(Mga susi.ENTER)

Kapag tapos ka na, i-save ang ex01.py Python script.

I-import ng linya 1-4 ang lahat ng kinakailangang sangkap sa programa ng Python.

Lumilikha ang Line 6 ng isang Chrome browser bagay gamit ang chromedriver binary mula sa mga driver / direktoryo ng proyekto.

Sinasabi ng Line 8 sa browser na mai-load ang website na facebook.com.

Hahanap ng linya 10 ang link na mayroong teksto Nakalimutang account? Gamit ang tagapili ng XPath. Para doon, ginamit ko ang XPath selector // * [text () = ’Nakalimutang account?’] .

Ang tagapili ng XPath ay nagsisimula sa //, na nangangahulugang ang elemento ay maaaring maging kahit saan sa pahina. Ang * Sinasabi ng simbolo sa Selenium na pumili ng anumang tag ( sa o p o span, atbp.) na tumutugma sa kundisyon sa loob ng mga square bracket [] . Dito, ang kondisyon ay, ang teksto ng elemento ay katumbas ng Nakalimutang account?

Ang teksto () Ginagamit ang pagpapaandar ng XPath upang makuha ang teksto ng isang elemento.

Halimbawa, teksto () nagbabalik Kamusta Mundo kung pipiliin nito ang sumusunod na elemento ng HTML.

< sa href='http://dummysite.com'>Kamusta Mundo</ sa >

Ipinapadala ng Linya 11 ang pindutin ang key sa Nakalimutang account? Link

Patakbuhin ang script ng Python ex01.py kasama ang sumusunod na utos:

$ python ex01.py

Tulad ng nakikita mo, hahanapin, pipiliin at pipindutin ng web browser ang susi sa Nakalimutang account? Link

Ang Nakalimutang account? Dadalhin ng link ang browser sa sumusunod na pahina.

Sa parehong paraan, madali mong mahahanap ang mga elemento na mayroong nais mong halaga ng katangian.

Narito, ang Mag log in ang pindutan ay isang input elemento na mayroong halaga katangian Mag log in . Tingnan natin kung paano piliin ang sangkap na ito sa pamamagitan ng teksto.

Lumikha ng isang bagong script sa Python ex02.py at i-type ang mga sumusunod na linya ng mga code dito.

mula sasiliniyumangkatwebdriver
mula sasiliniyumwebdriver.pangkaraniwan.mga susi angkatMga susi
mula sasiliniyumwebdriver.pangkaraniwan.ni angkatNi
mula sa oras angkatmatulog
browser=webdriver.Chrome(maipapatupad na_path='./drivers/chromedriver')
browserkumuha ka('https://www.facebook.com/')
matulog(5)
emailInput=browserfind_element(NiXPATH, '// input [@ id =' email ']')
passwordInput=browserfind_element(NiXPATH, '// input [@ id =' pass ']')
pindutan ng pag-login=browserfind_element(NiXPATH, '// * [@ value =' Mag-log In ']')
emailInput.send_keys('[Protektado ang email]')
matulog(5)
passwordInputsend_keys('lihim-pass')
matulog(5)
pindutan ng pag-loginsend_keys(Mga susi.ENTER)

Kapag tapos ka na, i-save ang ex02.py Python script.

Ang linya 1-4 ay nag-import ng lahat ng kinakailangang mga sangkap.

Lumilikha ang Line 6 ng isang Chrome browser bagay gamit ang chromedriver binary mula sa mga driver / direktoryo ng proyekto.

Sinasabi ng Line 8 sa browser na mai-load ang website na facebook.com.

Napakabilis mangyari ang lahat sa sandaling patakbuhin mo ang script. Kaya, ginamit ko na ang matulog () gumana ng maraming beses sa ex02.py para sa pagkaantala ng mga utos ng browser. Sa ganitong paraan, maaari mong obserbahan kung paano gumagana ang lahat.

Nahanap ng linya 11 ang kahon ng teksto ng pag-input ng email at nag-iimbak ng sanggunian ng elemento sa emailInput variable.

Mahahanap ng linya 12 ang kahon ng teksto ng pag-input ng email at nag-iimbak ng sanggunian ng elemento sa emailInput variable.

Hahanapin ng linya 13 ang elemento ng pag-input na mayroong katangian halaga ng Mag log in gamit ang tagapili ng XPath. Para doon, ginamit ko ang XPath selector // * [@ value = ’Mag-log In] .

Ang tagapili ng XPath ay nagsisimula sa // . Nangangahulugan ito na ang elemento ay maaaring maging kahit saan sa pahina. Ang * Sinasabi ng simbolo sa Selenium na pumili ng anumang tag ( input o p o span, atbp.) na tumutugma sa kundisyon sa loob ng mga square bracket [] . Dito, ang kundisyon ay, ang katangian ng elemento halaga ay katumbas ng Mag log in .

Ang linya 15 ay nagpapadala ng input[protektado ng email]sa kahon ng teksto ng pag-input ng email, at ang linya 16 ay pagkaantala sa susunod na operasyon.

Ipinapadala ng linya 18 ang lihim na pag-input sa kahon ng teksto ng pag-input ng password, at ang pagka-19 ay naantala ang susunod na operasyon.

Ipinapadala ng Linya 21 ang pindutin ang key sa pindutan ng pag-login.

Patakbuhin ang ex02.py Python script na may sumusunod na utos:

$ python3 ex02.py

Tulad ng nakikita mo, ang mga kahon ng teksto ng email at password ay puno ng aming mga halaga ng dummy, at ang Mag log in pinindot ang pindutan.

Pagkatapos ang pahina ay nag-navigate sa sumusunod na pahina.

Paghahanap ng Mga Elemento ayon sa Bahagyang Tekstong:

Sa naunang seksyon, ipinakita ko sa iyo kung paano makahanap ng mga elemento sa pamamagitan ng tiyak na teksto. Sa seksyong ito, ipapakita ko sa iyo kung paano makahanap ng mga elemento mula sa mga web page na gumagamit ng bahagyang teksto.

Sa halimbawa, ex01.py , Hinanap ko ang elemento ng link na mayroong teksto Nakalimutang account? . Maaari kang maghanap sa parehong elemento ng link gamit ang bahagyang teksto tulad ng Nakalimutang acc . Upang magawa iyon, maaari mong gamitin ang naglalaman ng () Ang pagpapaandar ng XPath, tulad ng ipinakita sa linya 10 ng ex03.py . Ang natitirang mga code ay pareho sa ex01.py . Magiging pareho ang mga resulta.

Sa linya 10 ng ex03.py , ginamit ang kundisyon ng pagpili ng naglalaman ng (pinagmulan, teksto) Pag-andar ng XPath. Ang pagpapaandar na ito ay tumatagal ng 2 mga argumento, pinagmulan, at text .

Ang naglalaman ng () Sinusuri ng pagpapaandar kung ang text na ibinigay sa pangalawang argument na bahagyang tumutugma sa pinagmulan halaga sa unang argumento.

Ang pinagmulan ay maaaring teksto ng elemento ( teksto () ) o ang halaga ng katangian ng elemento ( @attr_name ).

Sa ex03.py , ang teksto ng elemento ay nasuri.

Ang isa pang kapaki-pakinabang na pagpapaandar ng XPath upang makahanap ng mga elemento mula sa web page na gumagamit ng bahagyang teksto ay nagsisimula-sa (pinagmulan, teksto) . Ang pagpapaandar na ito ay may parehong mga argumento bilang ang naglalaman ng () pagpapaandar at ginagamit sa parehong paraan. Ang pagkakaiba lamang ay ang nagsisimula-sa () Sinusuri ng pagpapaandar kung ang pangalawang argumento text ay ang panimulang string ng unang argumento pinagmulan .

Sinulat ko ulit ang halimbawa ex03.py upang hanapin ang elemento kung saan nagsisimula ang teksto Nakalimutan, tulad ng nakikita mo sa linya 10 ng ex04.py . Ang resulta ay kapareho ng sa ex02 at ex03.py .

Sumulat na din ako ex02.py kaya't hinahanap nito ang elemento ng pag-input kung saan ang halaga nagsisimula ang katangian sa Mag-log, tulad ng nakikita mo sa linya 13 ng ex05.py . Ang resulta ay kapareho ng sa ex02.py .

Konklusyon:

Sa artikulong ito, ipinakita ko sa iyo kung paano makahanap at pumili ng mga elemento mula sa mga web page sa pamamagitan ng teksto sa silid silid ng Selenium Python. Ngayon, dapat kang makahanap ng mga elemento mula sa mga web page sa pamamagitan ng tukoy na teksto o bahagyang teksto sa silid silid ng Selenium Python.