Ответ 1
Попробуйте использовать
Thread.sleep(10000);
При использовании этого веб-элементы на странице получают достаточно времени для загрузки
Здесь у меня есть изображение моего кода и изображение моей ошибки. Может ли кто-нибудь помочь мне решить эту проблему?
Попробуйте использовать
Thread.sleep(10000);
При использовании этого веб-элементы на странице получают достаточно времени для загрузки
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);
Фактически Исключение составляет 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));
Решение этой проблемы для Javascript выглядит следующим образом. Вам придется изменить время в соответствии с вашими потребностями.
driver.manage().setTimeouts({ implicit: 30000 });
Надеюсь, это кому-нибудь пригодится. см. документы для справки
Я получил это, потому что элемент, с которым я хотел взаимодействовать, был покрыт другим элементом. В моем случае это был непрозрачный оверлей, чтобы все было перенаправлено.
При попытке щелкнуть элемент ПОД другим элементом мы обычно получаем "... другой элемент получит щелчок", но не всегда:. (