¿Cómo resolver ElementNotInteractableException en Selenium webdriver?

Aquí tengo la imagen de mi código y la imagen de mi error. ¿Alguien puede ayudarme a resolver este problema?

enter image description here

enter image description here

Intenta usar

Thread.sleep(10000); 

Al usar esto, los elementos web en la página tienen suficiente tiempo para cargar

¿Qué es ElementNotInteractableException ?

Según la documentación, ElementNotInteractableException es la excepción W3C que se lanza para indicar que aunque un elemento está presente en el DOM TREE , no se encuentra en un estado con el que se pueda interactuar.

Razones y soluciones

La razón por la que ocurre ElementNotInteractableException puede ser numerosa.

  1. Superposición temporal de otro WebElement sobre el WebElement de nuestro interés :

    En este caso, la solución directa habría sido inducir ExplicitWait es decir, WebDriverWait en combinación con ExpectedCondition como invisibilityOfElementLocated como folllows:

     WebDriverWait wait2 = new WebDriverWait(driver, 10); wait2.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("xpath_of_element_to_be_invisible"))); driver.findElement(By.xpath("xpath_element_to_be_clicked")).click(); 

    Una mejor solución será obtener un poco más granular y en lugar de usar ExpectedCondition como invisibilityOfElementLocated podemos usar ExpectedCondition como elementToBeClickable siguiente manera:

     WebDriverWait wait1 = new WebDriverWait(driver, 10); WebElement element1 = wait1.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_element_to_be_clicked"))); element1.click(); 
  2. Superposición permanente de otro WebElement sobre el WebElement de nuestro interés :

    Si la superposición es permanente, en este caso tenemos que convertir la instancia de WebDriver como JavascriptExecutor y realizar la operación de clic de la siguiente manera:

     WebElement ele = driver.findElement(By.xpath("element_xpath")); JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("arguments[0].click();", ele); 

En realidad, la excepción es Element Not Visible

La mejor práctica es usar la Implicit wait usuario debajo de la instanciación del controlador para que obtenga suficiente tiempo elemento fino antes a través de la excepción

 driver.get("http://www.testsite.com"); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

Todavía se está presentando un problema ya que algunos elementos requieren más tiempo, por lo que debes usar ExplicitWait para que un elemento individual satisfaga ciertas condiciones.

En su caso, usted se enfrenta a not visible exception elemento y luego usa la condición de espera de la siguiente manera

 WebDriverWait wait = new WebDriverWait(driver, 120); wait.until(ExpectedConditions.visibilityOfElementLocated(By.your_Elemetnt));