Encuentra elementos con Selenium en Python

Manav Narula 21 junio 2023
  1. Encuentra elementos con Selenium en Python
  2. Utilice la función find_elements_by_name() para encontrar elementos con Selenium en Python
  3. Use la función find_elements_by_id() para encontrar elementos con Selenium en Python
  4. Utilice la función find_elements_by_xpath() para encontrar elementos con Selenium en Python
  5. Use la función find_elements_by_link_text() para encontrar elementos con Selenium en Python
  6. Use la función find_elements_by_partial_link_text() para encontrar elementos con Selenium en Python
  7. Use la función find_elements_by_tag_name() para encontrar elementos con Selenium en Python
  8. Utilice la función find_elements_by_class_name() para encontrar elementos con Selenium en Python
  9. Use la función find_elements_by_css_selector() para encontrar elementos con Selenium en Python
  10. Usa la función find_elements() para encontrar elementos con Selenium en Python
  11. Conclusión
Encuentra elementos con Selenium en Python

El paquete de selenio en Python se usa para la automatización con navegadores web; es compatible con casi todos los principales navegadores. Podemos escribir scripts en Python que automatizarán algunas tareas en un navegador.

Este tutorial demostrará diferentes métodos para encontrar elementos en una página web usando selenio en Python.

Encuentra elementos con Selenium en Python

Los elementos son las construcciones básicas de una página web y se utilizan para definir su estructura. Podemos encontrar elementos usando diferentes funciones del selenio.

Estas funciones se utilizan para encontrar los elementos utilizando diferentes atributos como nombre, xpath, id, y más. Usaremos los métodos para recuperar elementos del documento HTML a continuación.

<html>
 <body>
  <p class="content">Some text</p>
  <a href="link.html"> Link_text </a>
  <form id="some_form">
   <input name="email" type="text" />
   <input name="pass" type="password" />
  </form>
</body>
</html>

Tenga en cuenta que si no hay coincidencias en ningún caso, se genera una excepción NoSuchElementException. Todos devolverán una lista de elementos donde se encuentra la coincidencia.

Los métodos se discuten a continuación.

Utilice la función find_elements_by_name() para encontrar elementos con Selenium en Python

Los diferentes elementos de una página web tienen asignado un atributo nombre. Podemos usar la función find_elements_by_name() para recuperar la lista de elementos que coinciden con el valor del atributo name.

Vea el código a continuación.

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_name("email")

Entendamos el código anterior.

  1. Primero importamos la clase webdriver para crear el navegador para la automatización. En nuestro caso, utilizaremos el chromedriver.exe para el navegador Google Chrome.
  2. Recuperamos la web de la que queremos obtener los elementos mediante la función get().
  3. Para obtener la lista de elementos, usamos la función find_element_by_name() y especificamos el valor para el atributo name dentro de la función.

Tenga en cuenta que el código seguirá siendo el mismo para todos los métodos que se analizan a continuación. Solo cambiará la función para recuperar los elementos (en este caso find_element_by_name()).

Use la función find_elements_by_id() para encontrar elementos con Selenium en Python

El atributo id también puede devolver una lista de elementos que se encuentran en una página web. Para ello, podemos utilizar la función find_elements_by_id().

Por ejemplo,

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_id("some_form")

Utilice la función find_elements_by_xpath() para encontrar elementos con Selenium en Python

Podemos usar las expresiones de ruta usando xpath para recuperar nodos de un documento. Para encontrar elementos usando el xpath, podemos usar la función find_elements_by_xpath().

La expresión de ruta se especifica en la función.

Por ejemplo,

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_xpath("/html/body/form[1]")

Tenemos elementos en el documento que pueden redirigir a otras páginas web. Esto se logra usando la etiqueta ancla.

Usando la función find_elements_by_link_text(), podemos recuperar los elementos usando el texto del enlace.

Vea el código a continuación.

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_link_text("Link_text")

Esta función es similar a la anterior. La diferencia es que devuelve los elementos que coinciden con el texto parcial del enlace.

Por ejemplo,

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_partial_link_text("Link_")

En el ejemplo anterior, podemos observar que pudimos recuperar el elemento simplemente usando el texto del enlace parcial.

Use la función find_elements_by_tag_name() para encontrar elementos con Selenium en Python

Cada elemento en el documento HTML tiene un nombre de etiqueta. Para encontrar elementos usando el nombre de la etiqueta, podemos usar find_element_by_tag_name() en Python.

Vea el código a continuación.

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_tag_name("form")

Utilice la función find_elements_by_class_name() para encontrar elementos con Selenium en Python

Podemos usar la función find_elements_by_class_name() para recuperar los elementos que coinciden con un atributo de clase dado en una página web.

Vea el código a continuación.

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_class_name("content")

Use la función find_elements_by_css_selector() para encontrar elementos con Selenium en Python

Podemos diseñar elementos HTML utilizando la sintaxis del selector CSS. La sintaxis del selector CSS también se puede utilizar para encontrar los elementos con la función find_elements_by_css_selector().

Vea el siguiente ejemplo.

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_css_selector("p.content")

Usa la función find_elements() para encontrar elementos con Selenium en Python

La función find_elements() es un método privado que puede recuperar elementos del documento HTML. Es como la culminación de todos los métodos discutidos anteriormente.

Podemos usar todos los atributos anteriores como parámetros para encontrar los elementos.

Por ejemplo,

from selenium.webdriver.common.by import By
from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_elements(By.NAME, "email")

El ejemplo anterior encontrará los elementos usando el atributo nombre como se hizo anteriormente.

Conclusión

Hemos discutido diferentes métodos para encontrar elementos basados en diferentes atributos con selenio en Python. Cada atributo tiene su función.

También podemos usar el método privado find_elements y proporcionar diferentes atributos como parámetros. Otra cosa a tener en cuenta es que los métodos de este artículo devuelven una lista de elementos para todas las coincidencias posibles.

Si necesitamos encontrar solo un elemento, podemos sustituir elementos por elemento en cada función discutida. Por ejemplo, buscar_elementos se convierte en buscar_elemento.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artículo relacionado - Python Selenium