Я обнаружил проблему при попытке использовать Selenium WebDriver для тестирования нашего приложения. Проблема в нестабильных всплывающих окнах, фокусирующихся на IE9 Это не всегда воспроизводимо, это происходит примерно при 20% переключения окон, но делает тестирование на IE практически невозможным. В FireFox все работает отлично.
- Я пытаюсь увеличить время ожидания:
TimeSpan interval = new TimeSpan(0, 0, 10);
driver.Manage().Timeouts().ImplicitlyWait(interval);
* * 1010
Создание собственных методов поиска объектов:
for (int x = 0; x <= waitTimeOut; x++)
{
try
{
element = (IWebElement)driver.FindElement(By.XPath(obj.Xpath));
return element;
}
catch{}
}
Попробуйте использовать CssSelecotrs
Попробуйте сделать некоторое переключение, прежде чем найти элемент:
driver.SwitchTo().Window(GetWindowHandle(2, 1));
driver.SwitchTo().Window(GetWindowHandle(0, 1));
driver.SwitchTo().Window(GetWindowHandle(2, 1));
Если проблема возникает, она всегда возникает только с первым элементом, который я пытаюсь найти на странице. Если элемент найден, нет проблем с поиском других элементов на этой странице. Поэтому я решил, что проблема в фокусировке.
Дескрипторы Windows в отладчике отображаются правильно. Например, если я переключаюсь на третье окно, driver.CurrentWindowHandle дает мне правильный дескриптор третьего окна. Но если я пытаюсь найти какой-либо элемент, FindElement () выдает мне исключение. Страница загружена, я могу щелкнуть элемент вручную, но FindElement () не может его найти. Если я перезапущу тест, этот шаг можно будет пройти без проблем и завершиться неудачей только при следующем переключении или далее. Это непредсказуемо.
В чем может быть причина такой проблемы?