Saltar al contenido

Comprobando si el elemento existe con Python Selenium

Este equipo de trabajo ha estado mucho tiempo buscando para darle soluciones a tus dudas, te brindamos la resolución por eso nuestro objetivo es serte de mucha ayuda.

Solución:

a)

from selenium.common.exceptions import NoSuchElementException        
def check_exists_by_xpath(xpath):
    try:
        webdriver.find_element_by_xpath(xpath)
    except NoSuchElementException:
        return False
    return True

b) use xpath – el más confiable. Además, puede tomar el xpath como estándar en todos sus scripts y crear funciones como las mencionadas anteriormente para uso universal.

ACTUALIZAR: Escribí la respuesta inicial hace más de 4 años y en ese momento pensé que xpath sería la mejor opción. Ahora recomiendo usar selectores css. Todavía recomiendo no mezclar/usar “por id”, “por nombre”, etc. y usar un solo enfoque en su lugar.

Ninguna de las soluciones proporcionadas me pareció la más fácil, por lo que me gustaría agregarlas a mi manera.

Básicamente, obtiene la lista de elementos en lugar de solo el elemento y luego cuenta los resultados; si es cero, entonces no existe. Ejemplo:

if driver.find_elements_by_css_selector('#element'):
    print "Element exists"

Observe la “s” en find_elements_by_css_selector para asegurarse de que puede ser contable.

EDITAR: Estaba revisando el len( de la lista, pero recientemente aprendí que una lista vacía es falsa, por lo que no necesita obtener la longitud de la lista en absoluto, dejando un código aún más simple.

Además, otra respuesta dice que usar xpath es más confiable, lo cual simplemente no es true. Consulte ¿Cuál es la diferencia entre css-selector y Xpath? ¿Cuál es mejor (según el rendimiento y para las pruebas de navegador cruzado)?

R) Sí. La forma más fácil de comprobar si existe un elemento es simplemente llamar find_element dentro de una try/catch.

B) Sí, siempre trato de identificar elementos sin usar su texto por 2 razones:

  1. es más probable que el texto cambie y;
  2. si es importante para usted, no podrá ejecutar sus pruebas en compilaciones localizadas.

solución ya sea:

  1. Puede usar xpath para encontrar un elemento padre o antepasado que tenga una ID o algún otro identificador único y luego encontrar su hijo/descendiente que coincida con o;
  2. puede solicitar una identificación o nombre o algún otro identificador único para el enlace en sí.

Para las preguntas de seguimiento, usando try/catch es cómo puede saber si un elemento existe o no y aquí se pueden encontrar buenos ejemplos de esperas: http://seleniumhq.org/docs/04_webdriver_advanced.html

Te mostramos las comentarios y valoraciones de los lectores

Si haces scroll puedes encontrar las ilustraciones de otros programadores, tú igualmente eres capaz mostrar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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