ElementNotInteractableException даже после ожидания включения элемента - PullRequest
0 голосов
/ 14 июля 2020

Поскольку в. net нет метода ожидания для элемента, я создал этот метод сам:

public void WaitForLoad(Func<bool> cond)
{
    var timeout = 3;
    // Time waiting for successful submission before we assume error
    try
    {
        new WebDriverWait(Driver, TimeSpan.FromSeconds(timeout)).Until(condition => cond());
    }
    catch
    {
        throw new TimeoutException($"Response took longer than {timeout}s.");
    }
}

При ожидании загрузки страницы я использую следующий блок кода:

// Wait until form overlay loads and becomes clickable
WaitForLoad(() =>
{
    var createGroupForm = $"{SelectorConstants.SidePanelOverlay} form";
    return Driver.FindElements(By.CssSelector(createGroupForm)).Any() && 
           Driver.FindElement(By.CssSelector(createGroupForm)).Enabled;
});

Затем я использую этот метод, чтобы дождаться включения элемента ввода, а затем очищать ввод и записывать в него.

var titleInput = Driver.FindElement(By.CssSelector(titleFieldSelector));
WaitForLoad(() => titleInput.Enabled);
titleInput.Clear();
titleInput.SendKeys("dsdsas");

Хотя иногда это срабатывает. Метод .Clear () иногда вызывает исключение:

OpenQA.Selenium.ElementNotInteractableException : element not interactable

Почему это происходит, когда я явно жду, пока элемент станет активным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...