Cómo encontrar elemento por texto con selenio

Cómo encontrar elemento por texto con selenio
Localizar y seleccionar elementos de la página web es la clave para rasparse web con Selenium. Puede seleccionar elementos usando un nombre de etiqueta, ID, nombre de clase, selector de XPath, selector CSS, etc. en selenio. También puede seleccionar elementos que tengan un texto específico con Selenium. Esto es útil para seleccionar enlaces y botones en la página web fácilmente. Incluso si la estructura de la página cambia, siempre que el texto del elemento de la página web siga siendo el mismo, su selector debería funcionar bien. Esta es la ventaja de seleccionar enlaces y botones usando texto en Selenium.

En este artículo, le mostraré cómo localizar y seleccionar elementos de las páginas web utilizando texto en Selenium con la biblioteca de Selenium Python. Entonces empecemos.

Prerrequisitos:

Para probar los comandos y ejemplos de este artículo, debe tener:

  1. Una distribución de Linux (preferiblemente Ubuntu) instalada en su computadora.
  2. Python 3 instalado en su computadora.
  3. PIP 3 instalado en su computadora.
  4. Pitón virtualenv Paquete instalado en su computadora.
  5. Los navegadores web de Mozilla Firefox o Google Chrome instalados en su computadora.
  6. Debe saber cómo instalar el controlador Gecko Firefox o el controlador web Chrome.

Para cumplir con los requisitos 4, 5 y 6, lea mi artículo Introducción al selenio en Python 3.

Puede encontrar muchos artículos sobre los otros temas en Linuxhint.comunicarse. Asegúrese de consultarlos si necesita alguna ayuda.

Configuración de un directorio de proyecto:

Para mantener todo organizado, cree un nuevo directorio de proyectos selenio-text-selecto/ como sigue:

$ mkdir -pv selenio-text-select/controladores

Navegar al selenio-text-selecto/ Directorio de proyectos de la siguiente manera:

$ CD Selenium-Text-Select/

Cree un entorno virtual de Python en el directorio del proyecto de la siguiente manera:

$ virtualenv .venado

Active el entorno virtual de la siguiente manera:

$ fuente .venv/bin/activar

Instale la biblioteca de Selenium Python usando PIP3 de la siguiente manera:

$ PIP3 Instalar selenio

Descargue e instale todo el controlador web requerido en el conductores/ directorio del proyecto. He explicado el proceso de descarga e instalación de controladores web en mi artículo Introducción al selenio en Python 3.

Encontrar elementos por texto:

En esta sección, le mostraré algunos ejemplos de búsqueda y selección de elementos de página web por texto con la biblioteca de Selenium Python.

Voy a comenzar con el ejemplo más simple de seleccionar elementos de la página web por texto, seleccionar enlaces en la página web.

En la página de inicio de sesión de Facebook.com, tenemos un enlace Cuenta olvidada? Como puede ver en la captura de pantalla a continuación. Seleccionemos este enlace con Selenium.

Crea un nuevo script de Python ex01.py y escriba las siguientes líneas de códigos en él.

Desde Selenium Import WebDriver
de Selenium.webdriver.común.llaves de importación de teclas
de Selenium.webdriver.común.por importación por
Desde el tiempo de sueño
navegador = webdriver.Chrome (ejecutable_path = "./controladores/cromedriver ")
navegador.Get ("https: // www.Facebook.com/")
ForgotAtAcCountLink = navegador.find_element (por.XPATH, "Post-66569 -_HLK47727696">
//*[text () = 'Cuenta olvidada?'] ")
OlvidéCountlink.send_keys (claves.INGRESAR)

Una vez que haya terminado, guarde el ex01.py Guión de pitón.

Línea 1-4 Importa todos los componentes requeridos en el programa Python.

La línea 6 crea un cromo navegador objeto usando el cromedríguico binario del conductores/ directorio del proyecto.

La línea 8 le dice al navegador que cargue el sitio web Facebook.comunicarse.

La línea 10 encuentra el enlace que tiene el texto Cuenta olvidada? Usando el selector de XPath. Para eso, he usado el selector XPath //*[text () = 'Cuenta olvidada?'].

El selector XPath comienza con //, lo que significa que el elemento puede estar en cualquier lugar de la página. El * El símbolo le dice a Selenium que seleccione cualquier etiqueta (a o pag o durar, etc.) que coincide con la condición dentro de los soportes cuadrados []. Aquí, la condición es que el texto del elemento es igual al Cuenta olvidada?

El texto() La función XPath se usa para obtener el texto de un elemento.

Por ejemplo, texto() devoluciones Hola Mundo Si selecciona el siguiente elemento HTML.

Hola Mundo

La línea 11 envía el tecla Presione al Cuenta olvidada? Enlace.

Ejecute el guión de Python ex01.py Con el siguiente comando:

$ python ex01.py

Como puede ver, el navegador web encuentra, selecciona y presiona el llave en el Cuenta olvidada? Enlace.

El Cuenta olvidada? El enlace lleva el navegador a la página siguiente.

De la misma manera, puede buscar fácilmente elementos que tengan su valor de atributo deseado.

Aquí el Acceso El botón es un aporte elemento que tiene el valor atributo Acceso. Veamos cómo seleccionar este elemento por texto.

Crea un nuevo script de Python ex02.py y escriba las siguientes líneas de códigos en él.

Desde Selenium Import WebDriver
de Selenium.webdriver.común.llaves de importación de teclas
de Selenium.webdriver.común.por importación por
Desde el tiempo de sueño
navegador = webdriver.Chrome (ejecutable_path = "./controladores/cromedriver ")
navegador.Get ("https: // www.Facebook.com/")
dormir (5)
emailInput = navegador.find_element (por.Xpath, "// input [@id = 'correo electrónico']")
contraseñainput = navegador.find_element (por.Xpath, "// input [@id = 'pass']")
LoginButton = navegador.find_element (por.XPATH, "//*[@value = 'Log in']")
correo electrónico.send_keys ('Dummy@correo electrónico.com ')
dormir (5)
contraseña.send_keys ('Secret-Pass')
dormir (5)
loginbutton.send_keys (claves.INGRESAR)

Una vez que haya terminado, guarde el ex02.py Guión de pitón.

Línea 1-4 Importa todos los componentes requeridos.

La línea 6 crea un cromo navegador objeto usando el cromedríguico binario del conductores/ directorio del proyecto.

La línea 8 le dice al navegador que cargue el sitio web Facebook.comunicarse.

Todo sucede tan rápido una vez que ejecutas el guión. Entonces, he usado el dormir() funcionar muchas veces en ex02.py Para retrasar los comandos del navegador. De esta manera, puedes observar cómo funciona todo.

La línea 11 encuentra el cuadro de texto de entrada de correo electrónico y almacena una referencia del elemento en el correo electrónico variable.

La línea 12 encuentra el cuadro de texto de entrada de correo electrónico y almacena una referencia del elemento en el correo electrónico variable.

La línea 13 encuentra el elemento de entrada que tiene el atributo valor de Acceso Usando el selector de XPath. Para eso, he usado el selector XPath //*[@value = 'Log in'].

El selector XPath comienza con //. Significa que el elemento puede estar en cualquier lugar de la página. El * El símbolo le dice a Selenium que seleccione cualquier etiqueta (aporte o pag o durar, etc.) que coincide con la condición dentro de los soportes cuadrados []. Aquí, la condición es el atributo del elemento valor es igual a Acceso.

La línea 15 envía el muñeco de entrada@correo electrónico.com en el cuadro de texto de entrada de correo electrónico, y la línea 16 retrasa la siguiente operación.

La línea 18 envía la entrada Secret-Pass al cuadro de texto de entrada de contraseña, y la línea 19 retrasa la siguiente operación.

La línea 21 envía el clave Presione al botón de inicio de sesión.

Ejecutar el ex02.py Script Python con el siguiente comando:

$ python3 ex02.py

Como puede ver, los cuadros de texto de correo electrónico y contraseña están llenos de nuestros valores ficticios y el Acceso se presiona el botón.

Luego la página navega a la siguiente página.

Encontrar elementos por texto parcial:

En la sección anterior, le he mostrado cómo encontrar elementos por texto específico. En esta sección, le mostraré cómo encontrar elementos de las páginas web utilizando texto parcial.

En el ejemplo, ex01.py, He buscado el elemento de enlace que tiene el texto Cuenta olvidada?. Puede buscar el mismo elemento de enlace usando texto parcial como ACC olvidado. Para hacer eso, puedes usar el contiene() Función XPath, como se muestra en la línea 10 de ex03.py. El resto de los códigos son los mismos que en ex01.py. Los resultados serán los mismos.

En la línea 10 de ex03.py, La condición de selección utilizó el contiene (fuente, texto) Función xpath. Esta función toma 2 argumentos, fuente, y texto.

El contiene() la función verifica si el texto dado en el segundo argumento coincide parcialmente con el fuente valor en el primer argumento.

La fuente puede ser el texto del elemento (texto()) o el valor de atributo del elemento (@attr_name).

En ex03.py, Se verifica el texto del elemento.

Otra función de XPath útil para encontrar elementos de la página web utilizando texto parcial es comienza con (fuente, texto). Esta función tiene los mismos argumentos que el contiene() función y se usa de la misma manera. La única diferencia es que el comienza con() La función verifica si el segundo argumento texto es la cadena inicial del primer argumento fuente.

He reescrito el ejemplo ex03.py Para buscar el elemento para el que el texto comienza con Olvidado, Como puede ver en la línea 10 de ex04.py. El resultado es el mismo que en ex02 y ex03.py.

También he reescrito ex02.py para que busque el elemento de entrada para el cual el valor El atributo comienza con Registro, Como puede ver en la línea 13 de ex05.py. El resultado es el mismo que en ex02.py.

Conclusión:

En este artículo, le he mostrado cómo encontrar y seleccionar elementos de las páginas web por texto con la biblioteca de Selenium Python. Ahora, debería poder encontrar elementos de páginas web por texto específico o texto parcial con la biblioteca de Selenium Python.