Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

168
Visualizações
¿Cómo administrar un botón con atributo deshabilitado usando Python Selenium?

Tener este botón:

 <button id="btn-login-5" type="button" class="m-1 btn btn-warning" disabled="">Update</button>

Quiero eliminar el atributo de desactivación para poder hacer clic en el botón.

Este es el código que veo cada vez:

 button = self.driver.find_element( By.XPATH, "/html/body/div/div/button") self.driver.execute_script( 'arguments[0].removeAttribute("disabled");', button)

Pero no puedo entender cómo puede funcionar eso para alguien, quiero decir, si el elemento está deshabilitado, Selenium no puede ejecutar esa primera línea, no puede asignar el "botón" var porque no puede encontrar ese elemento .

¿Me estoy perdiendo de algo? Recibo este error si ejecuto eso:

 selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/div/button"}

Actualizar

Me acabo de dar cuenta de que esto está relacionado con la cuadrícula de selenio, traté de hacer clic en el botón de muchas maneras, y nadie funciona, pero si en lugar de usar la cuadrícula de selenio uso un controlador web local, ¡todos funcionan! Así que no tengo idea de qué hacer ahora.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Si usa este xpath relativo, en lugar de uno absoluto, funciona:

 button = driver.find_element(By.XPATH, "//button[@type='button']")

¿Pero es este el único botón en tu DOM? De lo contrario, es posible que deba agregarle otras entidades relativas.

Código refactorizado (según la información de consulta proporcionada):

 button = driver.find_element(By.XPATH, "//button[@type='button']") driver.execute_script('arguments[0].removeAttribute("disabled");', button) button.click()

Producción:

 Process finished with exit code 0
about 4 years ago · Juan Pablo Isaza Relatório

0

El atributo disabled se puede configurar para evitar que un usuario haga clic en el botón hasta que se cumpla alguna otra condición (como seleccionar una casilla de verificación, etc.). Luego, un JavaScript podría eliminar el valor deshabilitado y volver a hacer clic en el botón.


Estabas lo suficientemente cerca. Para eliminar el atributo disabled , el elemento Actualizar aún se puede identificar por su presencia utilizando la siguiente estrategia de localización :

 button = WebDriverWait(self.driver, 20).until(EC.presence_of_element_located((By.XPATH, "//button[@class='m-1 btn btn-warning' and text()='Update']"))) self.driver.execute_script('arguments[0].removeAttribute("disabled");', button)
about 4 years ago · Juan Pablo Isaza Relatório

0

Todo funciona bien, el problema es otro, mi código no pudo encontrar el elemento porque el elemento no estaba allí, algo muy extraño, tengo un docker con el servidor de la página y si abro la página puedo ver el botón pero el controlador web de la cuadrícula de selenio no carga el botón en absoluto, no sé por qué, tal vez ese botón depende de algún servidor al que no se puede acceder desde el controlador web.

Le pediré esto al desarrollador de la página, pero el código era bueno :)

Perdí un día completo de trabajo por nada :)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda