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 dentro de una tabla div en selenium VBA.

He estado probando varios métodos para marcar una casilla de verificación dentro de un

pero está fallando.

Prueba #1

Dim Actions1 As Selenium.Actions
Actions1.MoveToElement(d.FindElementById("ChkDeclaration")).Click.Perform

Dice “Variable de objeto o bloque no establecido”.

Prueba #2

Dim ChkDeclaration0 As Selenium.WebElement
Set ChkDeclaration0 = driver.FindElementByID("ChkDeclaration")
ChkDeclaration0.Click

Dice “No se puede hacer clic en este punto”, a veces FUNCIONA.

Prueba #3

He intentado sendkeys(Keys.Return) pero tampoco funciona.

Por favor, déme alguna pista de cómo hacer esto.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basado en el código proporcionado, parece que la casilla de verificación se encuentra dentro de un elemento table y un elemento div. Por lo tanto, es posible que la casilla de verificación no se cargue correctamente antes de que el script intente interactuar con ella. Aquí hay algunas sugerencias para probar:

    1. Espere a que el elemento de la casilla de verificación sea clickable utilizando una espera explícita o implícita:
      ' Espera explícita - espera 10 segundos hasta que el elemento sea clickable
      Dim espera As Selenium.WebDriverWait
      Set espera = New Selenium.WebDriverWait(driver, 10)
      espera.Until (Selenium.ExpectedConditions.ElementToBeClickable(driver.FindElementById("ChkDeclaration")))
      

      o

      ' Espera implícita - establece un tiempo de espera predeterminado de 10 segundos para todos los elementos
      driver.Timeouts.ImplicitWait = 10000
      
    2. Intente hacer clic en el elemento de etiqueta en lugar del elemento de la casilla de verificación:
      driver.FindElementByCss("label[for='ChkDeclaration']").Click
      
    3. Si el elemento de la casilla de verificación está dentro de un iframe, cambie al iframe primero antes de interactuar con el elemento:
      driver.SwitchToFrame(driver.FindElementById("iframeId"))
      driver.FindElementById("ChkDeclaration").Click
      
    4. Verifique si hay otros elementos de casilla de verificación con el mismo id o nombre, e intente interactuar con esos elementos en su lugar:
      driver.FindElementByName("ctl00$ContentPlaceHolder1$ChkDeclaration").Click
      

    Esperemos que una de estas sugerencias funcione para marcar la casilla de verificación. Si no es así, proporcionar más detalles sobre los mensajes de error o su caso de uso específico puede ayudar a encontrar una solución.

Comments are closed.