Здесь у меня есть изображение моего кода и изображение моей ошибки. Может ли кто-нибудь помочь мне решить эту проблему?
Как решить ElementNotInteractableException: элемент не отображается в веб-драйвере Selenium?
Ответ 1
Попробуйте использовать
Thread.sleep(10000);
При использовании этого веб-элементы на странице получают достаточно времени для загрузки
Ответ 2
ElementNotInteractableException
ElementNotInteractableException - это исключение W3C, которое выдается, чтобы указать, что хотя элемент присутствует в HTML DOM, он не находится в состоянии, с которым можно взаимодействовать.
Причины & Решения:
Причина возникновения исключения ElementNotInteractableException может быть многочисленной.
Временное наложение другого
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();Постоянное наложение других
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
Я получил это, потому что элемент, с которым я хотел взаимодействовать, был покрыт другим элементом. В моем случае это был непрозрачный оверлей, чтобы все было перенаправлено.
При попытке щелкнуть элемент ПОД другим элементом мы обычно получаем "... другой элемент получит щелчок", но не всегда:. (

