Вопрос-ответ

How to resolve ElementNotInteractableException: Element is not visible in Selenium webdriver?

Как разрешить исключение ElementNotInteractableException: Элемент не виден в Selenium webdriver?

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

введите описание изображения здесь

введите описание изображения здесь

Переведено автоматически
Ответ 1

Исключение ElementNotInteractableException

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

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

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


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


    В этом случае прямым решением было бы вызвать, ExplicitWait т.е. WebDriverWait в сочетании с ExpectedCondition as 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 as invisibilityOfElementLocated мы можем использовать ExpectedCondition as 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);

Ответ 2

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

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

Ответ 3

Это исключение мы получаем, когда элемент не находится в состоянии взаимодействия. Таким образом, мы можем использовать wait, пока элемент не будет найден или станет доступным для кликабельности.


  1. Попробуйте использовать неявное ожидание:


    driver.manage().timeouts().implicitlyWait(Time, TimeUnit.SECONDS);


  2. Если это не работает, используйте явное ожидание:


    WebDriverWait wait=new WebDriverWait(driver, 20);
    WebElement input_userName;
    input_userName = wait.until(ExpectedConditions.elementToBeClickable(By.tagName("input")));
    input_userName.sendkeys("suryap");


Вы также можете использовать ExpectedCondition.visibilityOfElementLocated().
Вы можете увеличить время, например,

WebDriverWait wait=new WebDriverWait(driver, 90);
Ответ 4

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

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

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

java selenium selenium-webdriver