Ubicar elementos individuales en Selenium Python

Las estrategias de localización en Selenium Python son métodos que se utilizan para localizar elementos de la página y realizar una operación en la misma. El módulo Python de Selenium está diseñado para realizar pruebas automatizadas con Python. Los enlaces de Selenium Python proporcionan una API simple para escribir pruebas funcionales/de aceptación utilizando Selenium WebDriver. Después de haber instalado Selenium y verificado: navegar por los enlaces usando el método get , es posible que desee jugar más con Selenium Python. Después de abrir una página con selenium, como geeksforgeeks, es posible que el usuario desee hacer clic en algunos botones automáticamente o completar un formulario automáticamente o realizar cualquier tarea automatizada. Este artículo gira en torno a la localización de elementos individuales en Selenium Python.

Estrategias de localización para localizar primeros elementos únicos

Nota: find_element_by_*… ha quedado en desuso y, por lo tanto , By class se usa ahora con find_element . Para saber más: Visita aquí.

Selenium Python sigue diferentes estrategias de localización de elementos. Para localizar elementos hay que importar Por 

from selenium.webdriver.common.by import By

Se puede localizar un elemento de 8 maneras diferentes. Aquí hay una lista de estrategias de localización para Selenium en python: 

.math-table { borde-colapso: colapsar; ancho: 100%; } .math-table td { borde: 1px sólido #5fb962; alineación de texto: izquierda! importante; relleno: 8px; } .math-table th { borde: 1px sólido #5fb962; relleno: 8px; } .math-table tr>th{ color de fondo: #c6ebd9; alineación vertical: medio; } .math-table tr:nth-child(odd) { background-color: #ffffff; } 

localizadores Descripción
Por ID Se devolverá el primer elemento con el valor del atributo id que coincida con la ubicación.
Por nombre Se devolverá el primer elemento con el valor del atributo de nombre que coincida con la ubicación.
Por.XPATH Se devolverá el primer elemento con la sintaxis xpath que coincida con la ubicación.
Por.LINK_TEXT Se devolverá el primer elemento con el valor del texto del enlace que coincida con la ubicación.
Por.PARTIAL_LINK_TEXT Se devolverá el primer elemento con el valor de texto de enlace parcial que coincida con la ubicación.
Por.TAG_NAME Se devolverá el primer elemento con el nombre de etiqueta dado.
Por.CLASS_NAME se devolverá el primer elemento con el nombre de atributo de clase coincidente.
Por.CSS_SELECTOR Se devolverá el primer elemento con el selector de CSS coincidente.

Por ID

Con esta estrategia, se devolverá el primer elemento con el valor del atributo id que coincida con la ubicación. Si ningún elemento tiene un atributo de identificación coincidente, se generará una NoSuchElementException. 

Sintaxis: 

driver.find_element(By.ID, "id_of_element")

Ejemplo: Por ejemplo, considere la fuente de esta página: 

html

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
  </form>
 </body>
<html>

Ahora, después de haber creado un controlador, puede tomar un elemento usando:

login_form = driver.find_element(By.ID, 'loginForm')

Nota: find_element_by_id() ha quedado obsoleto.

Por nombre

Con esta estrategia, se devolverá el primer elemento con el valor del atributo de nombre que coincida con la ubicación. Si ningún elemento tiene un atributo de nombre coincidente, se generará una NoSuchElementException. 

Sintaxis: 

driver.find_element(By.NAME, "name_of_element")

Ejemplo: Por ejemplo, considere la fuente de esta página: 

html

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
  </form>
 </body>
<html>

Ahora, después de haber creado un controlador, puede tomar un elemento usando:

element = driver.find_element(By.NAME, 'username')

Nota: find_element_by_name() ha quedado obsoleto.

Por.XPATH

Con esta estrategia, se devolverá el primer elemento con patrón de xpath que coincida con la ubicación. Si ningún elemento tiene un atributo de elemento coincidente, se generará una NoSuchElementException. 

Sintaxis: 

driver.find_element(By.XPATH, "xpath")

Ejemplo: por ejemplo, considere la fuente de esta página: 

html

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
  </form>
 </body>
<html>

Ahora, después de haber creado un controlador, puede tomar un elemento usando:

login_form = driver.find_element(By.XPATH, "/html/body/form[1]")
login_form = driver.find_element(By.XPATH, "//form[1]")

Nota: find_element_by_xpath() ha quedado obsoleto.

Por.LINK_TEXT

Con esta estrategia, se devolverá el primer elemento con el valor del texto del enlace que coincida con la ubicación. Si ningún elemento tiene un atributo de texto de enlace coincidente, se generará una NoSuchElementException. 

Sintaxis: 

driver.find_element(By.LINK_TEXT, "Text of Link")

Ejemplo: Por ejemplo, considere la fuente de esta página: 

html

<html>
 <body>
  <p>Are you sure you want to do this?</p>
  <a href="continue.html">Continue</a>
  <a href="cancel.html">Cancel</a>
</body>
<html>

Ahora, después de haber creado un controlador, puede tomar un elemento usando

login_form = driver.find_element(By.LINK_TEXT, 'Continue')

Nota: find_element_by_link_text() ha quedado obsoleto.

Por.PARTIAL_LINK_TEXT

Con esta estrategia, se devolverá el primer elemento con el valor de texto de enlace parcial que coincida con la ubicación. Si ningún elemento tiene un atributo de texto de enlace parcial coincidente, se generará una NoSuchElementException.

Sintaxis: 

driver.find_element(By.PARTIAL_LINK_TEXT, "Text of Link")

Ejemplo: Por ejemplo, considere la fuente de esta página: 

html

<html>
 <body>
  <p>Are you sure you want to do this?</p>
  <a href="continue.html">Continue</a>
  <a href="cancel.html">Cancel</a>
</body>
<html>

Ahora, después de haber creado un controlador, puede tomar un elemento usando:

login_form = driver.find_element(By.PARTIAL_LINK_TEXT, 'Conti')

Nota: find_element_by_partial_link_text()  ha quedado obsoleto.

Por.TAG_NAME

Con esta estrategia, se devolverá el primer elemento con el nombre de etiqueta dado. Si ningún elemento tiene un nombre de etiqueta coincidente, se generará una NoSuchElementException. 

Sintaxis: 

driver.find_element(By.TAG_NAME, "Tag name")

Ejemplo: Por ejemplo, considere la fuente de esta página: 

html

<html>
 <body>
  <h1>Welcome</h1>
  <p>Site content goes here.</p>
</body>
<html>

Ahora, después de haber creado un controlador, puede tomar un elemento usando:

login_form = driver.find_element(By.TAG_NAME, 'h1')

Nota: find_element_by_tag_name()  ha quedado obsoleto.

Por.CLASS_NAME

Con esta estrategia, se devolverá el primer elemento con el nombre de atributo de clase coincidente. Si ningún elemento tiene un nombre de atributo de clase coincidente, se generará una NoSuchElementException. 

Sintaxis: 

driver.find_element(By.CLASS_NAME, "class_of_element")

Ejemplo: Por ejemplo, considere la fuente de esta página: 

html

<html>
 <body>
  <p class="content">Site content goes here.</p>
</body>
<html>

Ahora, después de haber creado un controlador, puede tomar un elemento usando:

content = driver.find_element(By.CLASS_NAME, 'content')

Nota: find_element_by_class_name() ha quedado obsoleto.

Por.CSS_SELECTOR

Con esta estrategia, se devolverá el primer elemento con el selector de CSS coincidente. Si ningún elemento tiene un selector de CSS coincidente, se generará una NoSuchElementException. 

Sintaxis: 

driver.find_element(By.CSS_SELECTOR, "CSS Selectors")

Ejemplo: Por ejemplo, considere la fuente de esta página: 

html

<html>
 <body>
  <p class="content">Site content goes here.</p>
</body>
<html>

Ahora, después de haber creado un controlador, puede tomar un elemento usando:

content = driver.find_element(By.CSS_SELECTOR, 'p.content')

Nota: find_element_by_css_selector() ha quedado obsoleto.

Publicación traducida automáticamente

Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *