Selenium против AJAX
На данный момент мир веб-приложений интенсивно развивается и интерфейс становится все более динамичным. Повсеместно используется асинхронное обновление элементов и AJAX. И такие веб-приложения приходится тестировать с помощью Selenium/WebDriver. Автоматизированный тест можно разбить на атомарные фрагменты, которые многократно выполняются в цикле: “найди элемент”, “выполни действие”, “подожди результат”. При автоматизации AJAX-приложений проблемы возникают со всеми тремя видами фрагментов.
Во-первых, искать элементы сложно, потому что они как правило имеют динамические локаторы (нет фиксированных идентификаторов или имен). Во-вторых, спектр возможных действий весьма широк. Это не только клики по ссылкам, как в “традиционных” веб-приложения, но и наведение курсора на элемент, перетаскивание, нажатия клавиш.
Ну и самое сложное — это ожидания. Что является признаком того, что некоторое действие выполнилось успешно или неуспешно? Появление или исчезноваение какого-то элемента? Добегание счётчика или прогресс-бара до 100%? А может быть не стоит вообще ждать полного завершения действия, достаточно лишь частичного результата, чтобы уже можно было продолжить выполнение теста?
На конференции Selenium Camp Алексей Баранцев рассказывал о том, как WebDriver решает все эти три задачи, особенно вторую и третью.