Selenium invalid element state: Элемент в настоящее время не взаимодействует и не может быть обработан

У меня эта проблема с селеном; Я не могу найти я textinput: он всегда поднимает эту уловку:

Element is not currently interactable and may not be manipulated

в этой строке:

Driver.FindElement(By.Id("ctl00")).Clear();

Я пытаюсь сделать так:

Waiting.Until(driver =>(By.Id("ctl00")));

и

Waiting.Until(ExpectedConditions.ElementExists(By.Id("ctl00"))); 

но не повезло.

Ответ 1

Если исключение попадает на Clear(), элемент, скорее всего, присутствует на странице и в входе в состоянии readonly.

Ответ 2

Попробуйте сначала проверить XPath, так как он может быть нацелен на несколько элементов. Из-за этого элемент в настоящее время не взаимодействует и не может быть изменен.

Я столкнулся с той же проблемой и нашел решение выше, так как мой XPath находил несколько элементов, которые существуют на DOM, но не на странице.

Исправьте элемент XPath, ошибка разрешится автоматически с добавлением ожидания webdriver.

Ответ 3

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

Вы можете проверить статус элемента, используя script

driver.findElement(By.className("")).isEnabled()

Ответ 4

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

wait.until(ExpectedConditions.elementToBeClickable(By.id("myElementId"))).clear();

Ответ 5

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

Ответ 6

Waiting.Until(ExpectedConditions.ElementExists(By.Id("ctl00"))); должен работать.

Установите точку прерывания в строке Waiting.Until() и введите $$("#ctl00") в консоли Chrome, чтобы проверить, существует ли этот элемент.

Ответ 7

Заставьте драйвер ждать, пока элемент не будет виден.

WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.until(ExpectedConditions.visibilityOf(element)); 

Надеюсь, это поможет!

Ответ 8

Если ожидание visibilityOf(), elementToBeClickable(), element.isEnabled() не помогает, попробуйте взглянуть на атрибуты вашего элемента.

У него могут быть некоторые атрибуты, отвечающие за состояние только для чтения, в моем случае это было aria-readonly и aria-disabled, поэтому я создал пользовательское ожидание так:

webDriverWait.until(webDriver -> webElement.getAttribute("aria-readonly").equals("false") && webElement.getAttribute("aria-disabled").equals("false"));

Ответ 9

Используйте это, вы не получите эту ошибку (может быть, прокрутка здесь не работает, поэтому используйте клавиатуру TAB для продолжения, моя проблема была решена этим)

     Actions act = new Actions(driver);

       act.sendKeys(Keys.TAB).build().perform();
       act.sendKeys(Keys.RETURN).build().perform();