Здесь у меня есть изображение моего кода и изображение моей ошибки. Может ли кто-нибудь помочь мне решить эту проблему?
Как решить 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
Я получил это, потому что элемент, с которым я хотел взаимодействовать, был покрыт другим элементом. В моем случае это был непрозрачный оверлей, чтобы все было перенаправлено.
При попытке щелкнуть элемент ПОД другим элементом мы обычно получаем "... другой элемент получит щелчок", но не всегда:. (