Ожидание Webdriver не может найти элемент, который существует - PullRequest
0 голосов
/ 01 ноября 2019

Здравствуйте, я немного новичок в селене. Я пытаюсь автоматизировать страницу для работы. Проблема, с которой я столкнулся, заключается в том, что веб-драйвер ждет, не найдя мои элементы, но я могу использовать эти элементы, если закомментирую часть ожидания. Кажется, проблема начинается после того, как я переключаю кадр. Есть ли какие-либо дополнительные шаги, которые мне нужно сделать после этого?

Обновление: когда я отлаживаю и прошагаю, все работает нормально. Но никогда не работает в тестовом прогоне

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(120));  
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.CssSelector("iframe[src='/CreditAdmin/']")));   
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementExists(By.CssSelector("input[aria-label='Filter for column']"))); //This never finds the Element

IWebElement companySearch = driver.FindElement(By.CssSelector("input[aria-label='Filter for column']"));  //This works fine if I comment out previous
companySearch.SendKeys(fieldValue);

1 Ответ

0 голосов
/ 01 ноября 2019

Попробуйте изменить

wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementExists(By.CssSelector("input[aria-label='Filter for column']")));

на:

wait.Until(c => c.FindElement(By.CssSelector("input[aria-label='Filter for column']")));
...