Полезные советы, неформальные пояснения к официальным сообщениям, инсайдерская информация о процессе разработки Selenium и всякое другое

Отладка Selenium-скриптов в Groovy Console

Когда я начал готовить примеры для рассылки “Selenium 2.0: сотня полезных советов”, передо мной встал вопрос выбора языка, на котором писать эти примеры. С одной стороны, хотелось использовать Java, потому что это “официальный” язык Selenium и все новые штуки сначала реализуются на Java, а только потом переносятся в реализации на других языках. С другой стороны, хотелось сделать так, чтобы примеры были компактными, но при этом полностью завершенными и готовыми к исполнению – взял и целиком запустил. Для этой цели лучше подходят динамические языки, Java слишком “многословна”, много инфраструктурного кода. В конце концов я остановился на промежуточном варианте: сложные примеры на Java, а простые – на Groovy, это динамический язык, но весьма похожий на Java и выполняющийся на виртуальной Java-машине. Но решающим фактором в пользу Groovy стало наличие симпатичной интерактивной консоли, в которой можно удобно экспериментировать со скриптами. Хотите – выполните пример полностью, а хотите – выделите фрагмент кода и выполните только его. ...

Selenium против AJAX

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