Подтвердить что ты не робот

Как решить ElementNotInteractableException: элемент не отображается в веб-драйвере Selenium?

Здесь у меня есть изображение моего кода и изображение моей ошибки. Может ли кто-нибудь помочь мне решить эту проблему?

enter image description here

enter image description here

4b9b3361

Ответ 1

Попробуйте использовать

Thread.sleep(10000);

При использовании этого веб-элементы на странице получают достаточно времени для загрузки

Ответ 2

ElementNotInteractableException

ElementNotInteractableException - это исключение W3C, которое выдается, чтобы указать, что хотя элемент присутствует в HTML DOM, он не находится в состоянии, с которым можно взаимодействовать.

Причины & Решения:

Причина возникновения исключения ElementNotInteractableException может быть многочисленной.

  1. Временное наложение другого WebElement на WebElement нашего интереса:

    В этом случае прямым решением было бы заставить ExplicitWait то есть WebDriverWait в сочетании с ExpectedCondition как invisibilityOfElementLocated следующим образом:

    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();
    

    Лучшим решением было бы получить немного более детальную информацию, и вместо использования ExpectedCondition в качестве invisibilityOfElementLocated мы можем использовать ExpectedCondition как elementToBeClickable следующим образом:

    WebDriverWait wait1 = new WebDriverWait(driver, 10);
    WebElement element1 = wait1.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_element_to_be_clicked")));
    element1.click();
    
  2. Постоянное наложение других WebElement на WebElement нашего интереса:

    Если наложение является постоянным, в этом случае мы должны привести WebDriver экземпляр к JavascriptExecutor и выполнить операцию щелчка следующим образом:

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

Ответ 3

Фактически Исключение составляет Element Not Visible

Лучшей практикой является пользователь Implicit wait ниже в драйвере Instantiation, поэтому он получает достаточный временной элемент до этого за исключением

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

По-прежнему сталкивается с проблемой, поскольку для какого-то элемента требуется больше времени для пользователя ExplicitWait для отдельного элемента, удовлетворяющего определенному условию

В вашем случае вы сталкиваетесь с элементом not visible exception, затем используйте условие ожидания следующим образом

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

Ответ 4

Решение этой проблемы для Javascript выглядит следующим образом. Вам придется изменить время в соответствии с вашими потребностями.

driver.manage().setTimeouts({ implicit: 30000 });

Надеюсь, это кому-нибудь пригодится. см. документы для справки

Ответ 5

Я получил это, потому что элемент, с которым я хотел взаимодействовать, был покрыт другим элементом. В моем случае это был непрозрачный оверлей, чтобы все было перенаправлено.

При попытке щелкнуть элемент ПОД другим элементом мы обычно получаем "... другой элемент получит щелчок", но не всегда:. (