es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hacer clic en una casilla de verificación basada en su clase en Selenium?

Ver código de sitio web:
aquí se describe la imagen

Hay múltiples etiquetas “td” con la clase ‘timeslotCellNonPeak’ y cada una de estas etiquetas “td” tiene el xpath:

//*[@id="searchResultTable"]/table/tbody/tr[2]/td[3],
//*[@id="searchResultTable"]/table/tbody/tr[2]/td[4],
//*[@id="searchResultTable"]/table/tbody/tr[2]/td[5],
...

Dentro de algunas de estas etiquetas “td”, tengo una casilla de verificación que quiero hacer clic en ella. Mi objetivo final es definir una clase “td” para buscar, digamos

//*[@id="searchResultTable"]/table/tbody/tr[2]/td[3]

y luego hacer clic en la casilla de verificación si está presente.

He intentado buscar cajas con

id=gwt-uid-102

pero no funcionará ya que el id es diferente cada vez.

En resumen, quiero:

i = # aquí definiré un número
tdClass = driver.find_element_by_xpath("//[@id="searchResultTable"]/table/tbody/tr[2]/td[i]")

<h1>luego dentro de esta tdClass, hacer clic en la casilla de verificación si está presente.</h1>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el objetivo anterior, puedes usar el siguiente código:

    i = 3  # asumiendo que deseas buscar en la tercera clase td
    
    tdClass = driver.find_element_by_xpath(f'//*[@id="searchResultTable"]/table/tbody/tr[2]/td[{i}]')
    # utilizando f-string para interpolar la variable i en el xpath
    
    # chequear si hay un checkbox dentro de la clase td
    checkbox = tdClass.find_elements_by_xpath('.//input[@type="checkbox"]')
    if checkbox:
        checkbox[0].click()
    

    Aquí, primero definimos el número de la clase td en la que queremos buscar como i. Luego, usamos find_element_by_xpath para obtener el elemento de esa clase td.

    A continuación, usamos find_elements_by_xpath en el elemento td para intentar encontrar cualquier checkbox dentro de él. Esto devolverá una lista de elementos coincidentes, o una lista vacía si no hay checkboxes.

    Finalmente, verificamos si la lista no está vacía y hacemos clic en el primer checkbox (asumiendo que solo hay uno) utilizando el método click.

Comments are closed.