Как заставить тест WebAii ждать завершения анимации jQuery?
Как написать тест Visual Studio WebAii, ожидающий завершения операции анимации jQuery, прежде чем продолжить?
В настоящее время я просто делаю паузу на 5 секунд, используя цикл, но это может легко сломаться, если время анимации изменится.
Я пробовал несколько методов ожидания в API WebAii, но ни один из них, похоже, не ждал такого рода вещей. Я думаю, что самое близкое, что я пришел, это Actions.WaitForElement(..), однако анимируемый элемент уже находится в DOM, так что это, похоже, не работает. Методы ожидания также кажутся мне неясными.
2 ответа
Можете ли вы отредактировать javascript, чтобы добавить функцию обратного вызова в вызов jQuery animate()? Если это так, это позволит вам установить ловушку, которую вы сможете легко обнаружить с помощью API WebAii. Например, вы можете сделать так, чтобы обратный вызов на анимации добавил (невидимый) элемент в DOM, а затем использовал метод WaitForElement, чтобы обнаружить это. Что-то вроде клуджа, но это сработало бы!
Вы можете проверить атрибуты анимированного элемента. Даже если элемент всегда присутствует, атрибуты должны быть изменены после завершения анимации. Поскольку я не знаю, какие это могут быть изменения, ниже приведу общий пример.
Код использует HtmlFindExpression в сочетании с WaitForElement. Предполагается дождаться обнаружения элемента с заданным идентификатором ("ctl00_ContentPlaceHolder1_btnAccept_CD").
Manager mng = new Manager(false);
mng.Start();
mng.LaunchNewBrowser(BrowserType.InternetExplorer);
string url = "http://yoururl";
mng.ActiveBrowser.NavigateTo(url);
mng.ActiveBrowser.WaitForElement(
new HtmlFindExpression("id=ctl00_ContentPlaceHolder1_btnAccept_CD"), 10000);
Надеюсь, это поможет.