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.

Python Selenium intentando hacer clic en un botón sin éxito.

Estoy intentando hacer clic en un botón utilizando un selector CSS. He intentado utilizando input con value, title y onclick pero no funciona, este es el código HTML:

<div id="botaoMarcar"><input type="button" disabled="" class="botao" value="Marcar todas" title="Marcar todas" onclick="javascript:marcarDesmarcarTodos(true);"></div>

Mi código:

driver = Chrome()
url = "https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries"
driver.get(url)

try:
    WebDriverWait(driver, 3).until(EC.alert_is_present(),
                                   'Timed out waiting for PA creation ' + 'confirmation popup to appear.')

    alert = driver.switch_to.alert
    alert.accept()

except TimeoutException:
    print("No Alert")

driver.implicitly_wait(5)
driver.maximize_window()

Esta parte es para acceder al código de la tabla de entrada:

id_code = driver.find_element(By.ID, 'txCodigo')
id_code.send_keys(24)
id_code.send_keys(Keys.ENTER)

Parte que no está funcionando como se espera:

clic_code = driver.find_element(By.CSS_SELECTOR, 'input[value*="Marcar todas"]')
clic_code.click()
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para hacer clic en el botón utilizando el selector CSS proporcionado en el fragmento de código, puedes intentar lo siguiente:

    clic_code = driver.find_element(By.CSS_SELECTOR, 'input[value="Marcar todas"][onclick*="marcarDesmarcarTodos(true)"]')
    clic_code.click()
    

    Este selector busca un elemento input con un atributo value de “Marcar todas” y un atributo onclick que contiene la cadena “marcarDesmarcarTodos(true)”. El operador *= se reemplaza con = para hacer una coincidencia exacta con el valor del atributo.

    Si esto todavía no funciona, puedes intentar un selector más específico que tenga en cuenta el elemento div que envuelve al elemento input:

    clic_code = driver.find_element(By.CSS_SELECTOR, '#botaoMarcar input[value="Marcar todas"][onclick*="marcarDesmarcarTodos(true)"]')
    clic_code.click()
    

    Este selector busca un elemento input con los mismos atributos que el ejemplo anterior, pero solo si es descendiente de un elemento con un id de “botaoMarcar”.

Comments are closed.