Com es troba l’element per text amb el seleni

How Find Element Text With Selenium



Localitzar i seleccionar elements de la pàgina web és la clau per al rascat web amb Selenium. Podeu seleccionar elements mitjançant un nom d’etiqueta, identificador, nom de classe, selector XPath, selector CSS, etc. a Selenium. També podeu seleccionar elements que tinguin un text específic amb Selenium. Això és útil per seleccionar fàcilment enllaços i botons de la pàgina web. Fins i tot si l'estructura de la pàgina canvia, sempre que el text de l'element de la pàgina web sigui el mateix, el selector hauria de funcionar bé. Aquest és l'avantatge de seleccionar enllaços i botons amb text a Selenium.

En aquest article, us mostraré com localitzar i seleccionar elements de pàgines web mitjançant text a Selenium amb la biblioteca Python Selenium. Per tant, comencem.







Requisits previs:

Per provar les ordres i exemples d’aquest article, heu de tenir:



  1. Una distribució Linux (preferiblement Ubuntu) instal·lada al vostre ordinador.
  2. Python 3 instal·lat al vostre ordinador.
  3. PIP 3 instal·lat al vostre ordinador.
  4. Python virtualenv paquet instal·lat a l'ordinador.
  5. Els navegadors web Mozilla Firefox o Google Chrome instal·lats a l’ordinador.
  6. Heu de saber instal·lar el controlador Firefox Gecko o el controlador web Chrome.

Per complir els requisits 4, 5 i 6, llegiu el meu article Introducció al seleni a Python 3 .



Podeu trobar molts articles sobre els altres temes a LinuxHint.com . Comproveu-los si necessiteu ajuda.





Configuració d'un directori de projectes:

Per mantenir-ho tot organitzat, creeu un directori de projectes nou selenium-text-select / com segueix:

$mkdir -pvselenium-text-select/conductors



Aneu a selenium-text-select / directori del projecte de la següent manera:

$cdselenium-text-select/

Creeu un entorn virtual Python al directori del projecte de la manera següent:

$virtualenv .venv

Activeu l'entorn virtual de la següent manera:

$font.venv/sóc/activar

Instal·leu la biblioteca Selenium Python mitjançant PIP3 de la següent manera:

$ pip3 instal·la seleni

Descarregueu i instal·leu tots els controladors web necessaris a conductors / directori del projecte. He explicat el procés de descàrrega i instal·lació de controladors web al meu article Introducció al seleni a Python 3 .

Cercar elements per text:

En aquesta secció, us mostraré alguns exemples de cerca i selecció d’elements de pàgines web per text amb la biblioteca Selenium Python.

Començaré per l’exemple més senzill de seleccionar elements de la pàgina web per text, seleccionar enllaços de la pàgina web.

A la pàgina d'inici de sessió de facebook.com, tenim un enllaç Compte oblidat? Com podeu veure a la captura de pantalla següent. Seleccionem aquest enllaç amb Selenium.

Creeu un nou script Python ex01.py i escriviu-hi les línies de codis següents.

des deseleniimportaciócontrolador web
des deseleni.controlador web.comú.claus importacióClaus
des deseleni.controlador web.comú.per importacióPer
des de temps importaciódormir
navegador=controlador web.Chrome(ruta_executable='./drivers/chromedriver')
navegador.aconseguir('Https://www.facebook.com/')
forgetAccountLink=navegador.trobar_element(Per.XPATH, '
// * [text () = 'Compte oblidat?'] '
)
forgetAccountLink.enviar_ claus(Claus.ENTRAR)

Un cop hàgiu acabat, deseu el fitxer ex01.py Script Python.

La línia 1-4 importa tots els components necessaris al programa Python.

La línia 6 crea un Chrome navegador objecte mitjançant el fitxer riu cromat binari des de conductors / directori del projecte.

La línia 8 indica al navegador que carregui el lloc web facebook.com.

La línia 10 troba l'enllaç que conté el text Compte oblidat? Utilitzant el selector XPath. Per a això, he utilitzat el selector XPath // * [text () = 'Compte oblidat?'] .

El selector XPath comença per //, el que significa que l'element pot estar a qualsevol lloc de la pàgina. El * El símbol indica a Selenium que seleccioni qualsevol etiqueta ( a o bé pàg o bé span, etc.) que coincideix amb la condició dins dels claudàtors [] . Aquí, la condició és que l'element text sigui igual a Compte oblidat?

El text() La funció XPath s’utilitza per obtenir el text d’un element.

Per exemple, text() torna Hola món si selecciona l’element HTML següent.

< a href='Http://dummysite.com'>Hola món</ a >

La línia 11 envia el fitxer premeu la tecla fins a Compte oblidat? Enllaç.

Executeu l'script Python ex01.py amb l'ordre següent:

$ python ex01.py

Com podeu veure, el navegador web troba, selecciona i prem el botó clau de la Compte oblidat? Enllaç.

El Compte oblidat? L’enllaç porta el navegador a la pàgina següent.

De la mateixa manera, podeu cercar fàcilment elements que tinguin el valor d’atribut desitjat.

Aquí, el Iniciar Sessió botó és un entrada element que té el valor atribut Iniciar Sessió . Vegem com seleccionar aquest element per text.

Creeu un nou script Python ex02.py i escriviu-hi les línies de codis següents.

des deseleniimportaciócontrolador web
des deseleni.controlador web.comú.claus importacióClaus
des deseleni.controlador web.comú.per importacióPer
des de temps importaciódormir
navegador=controlador web.Chrome(ruta_executable='./drivers/chromedriver')
navegador.aconseguir('Https://www.facebook.com/')
dormir(5)
entrada de correu electrònic=navegador.trobar_element(Per.XPATH, '// input [@ id =' email ']')
entrada de contrasenya=navegador.trobar_element(Per.XPATH, '// input [@ id =' pass ']')
botó d'inici de sessió=navegador.trobar_element(Per.XPATH, '// * [@ value =' Inici de sessió ']')
entrada d’email.enviar_ claus('[email protected]')
dormir(5)
entrada de contrasenya.enviar_ claus('secret-pass')
dormir(5)
botó d'inici de sessió.enviar_ claus(Claus.ENTRAR)

Un cop hàgiu acabat, deseu el fitxer ex02.py Script Python.

La línia 1-4 importa tots els components necessaris.

La línia 6 crea un Chrome navegador objecte mitjançant el fitxer riu cromat binari des de conductors / directori del projecte.

La línia 8 indica al navegador que carregui el lloc web facebook.com.

Tot passa tan de pressa un cop executat el guió. Per tant, he utilitzat el dormir () funcionen moltes vegades a ex02.py per retardar les ordres del navegador. D’aquesta manera, podeu observar com funciona tot.

La línia 11 troba el quadre de text d’entrada de correu electrònic i emmagatzema una referència de l’element a entrada d’email variable.

La línia 12 troba el quadre de text d’entrada de correu electrònic i emmagatzema una referència de l’element al fitxer entrada de correu electrònic variable.

La línia 13 troba l'element d'entrada que té l'atribut valor de Iniciar Sessió mitjançant el selector XPath. Per a això, he utilitzat el selector XPath // * [@ value = 'Inici de sessió'] .

El selector XPath comença per // . Vol dir que l’element pot estar a qualsevol lloc de la pàgina. El * El símbol indica a Selenium que seleccioni qualsevol etiqueta ( entrada o bé pàg o bé span, etc.) que coincideix amb la condició dins dels claudàtors [] . Aquí, la condició és l’atribut element valor és igual a Iniciar Sessió .

La línia 15 envia l'entrada[correu electrònic protegit]al quadre de text d’entrada de correu electrònic i la línia 16 retarda la següent operació.

La línia 18 envia el passi secret d’entrada al quadre de text d’entrada de contrasenya i la línia 19 retarda la següent operació.

La línia 21 envia el fitxer premeu la tecla al botó d'inici de sessió.

Executeu el fitxer ex02.py Script Python amb l'ordre següent:

$ python3 ex02.py

Com podeu veure, els quadres de text de correu electrònic i contrasenya s’omplen amb els nostres valors ficticis i el fitxer Iniciar Sessió es prem el botó.

A continuació, la pàgina navega fins a la pàgina següent.

Cercar elements per text parcial:

A la secció anterior, us he mostrat com podeu trobar elements per text específic. En aquesta secció, us mostraré com trobar elements de pàgines web mitjançant text parcial.

A l'exemple, ex01.py , He cercat l'element d'enllaç que conté el text Compte oblidat? . Podeu cercar el mateix element d’enllaç amb text parcial com Acc oblidat . Per fer-ho, podeu utilitzar el fitxer conté () Funció XPath, tal com es mostra a la línia 10 de ex03.py . La resta de codis són els mateixos que a ex01.py . Els resultats seran els mateixos.

A la línia 10 de ex03.py , la condició de selecció utilitza el fitxer conté (font, text) Funció XPath. Aquesta funció té 2 arguments, font, i text .

El conté () funció comprova si el fitxer text donat al segon argument coincideix parcialment amb font valor en el primer argument.

La font pot ser el text de l'element ( text() ) o el valor de l'atribut de l'element ( @attr_name ).

En ex03.py , es comprova el text de l'element.

Una altra funció útil XPath per trobar elements de la pàgina web mitjançant text parcial és comença per (font, text) . Aquesta funció té els mateixos arguments que el fitxer conté () funció i s’utilitza de la mateixa manera. L'única diferència és que el comença per () funció comprova si el segon argument text és la cadena inicial del primer argument font .

He reescrit l'exemple ex03.py per cercar l'element pel qual comença el text Oblidat, com podeu veure a la línia 10 de ex04.py . El resultat és el mateix que a ex02 i ex03.py .

També he reescrit ex02.py de manera que cerqui l'element d'entrada per al qual el fitxer valor l'atribut comença per Registre, com podeu veure a la línia 13 de ex05.py . El resultat és el mateix que a ex02.py .

Conclusió:

En aquest article us he mostrat com podeu cercar i seleccionar elements de les pàgines web per text amb la biblioteca Selenium Python. Ara, hauríeu de poder trobar elements de pàgines web per text específic o text parcial amb la biblioteca Selenium Python.