Итак, у меня есть тест Selenium, который ждет загрузки кнопки, прежде чем она с ней взаимодействует.
Как видно из моего кода, я реализовал его так, что драйвер будет ждать 14 секунд (14 - просто случайное число), или он будет двигаться дальше, если элемент расположен раньше 14 секунд.
Однако даже после того, как я дождался загрузки элемента и попытался с ним взаимодействовать (используя метод Click ()), я получаю эту ошибку, показывающую, что элемент не является «взаимодействующим».
Самое смешное, что это действительно работает иногда, когда элемент действительно взаимодействует, но не в других случаях.
public void TestChromeDriverMinimalWaitTime()
{
driver.Navigate().GoToUrl("http://www.google.com");
//find search bar and enter text
driver.FindElement(By.Name("q")).SendKeys("Selenium");
//wait 14 seconds max..
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(14));
//...unless button element is found
IWebElement waitUntil = wait.Until(x => x.FindElement(By.Name("btnK")));
//once found, click the button
waitUntil.Click();
//wait 4 secs till this test method ends
Thread.Sleep(2000);
}
Это ошибка, которую я получаю:
Строка 53 - это строка, которая говорит: waitUntil.Click ();

Пересмотренный рабочий код на основе ответа @ DebanjanB:
public void TestChromeDriverMinimalWaitTime()
{
driver.Navigate().GoToUrl("http://www.google.com");
//find search bar and enter text
driver.FindElement(By.Name("q")).SendKeys("Selenium");
//wait 14 seconds max..unless button element is found
IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(14)).Until(ExpectedConditions.ElementToBeClickable(By.Name("btnK")));
//click enter
element.SendKeys(Keys.Return);
Thread.Sleep(2000);
}