Pull to refresh

Comments 22

Спасибо за замечательную статью! Буквально 2 недели назад у себя в конторе рассказывал о Selenium как средстве Unit тестирования нашего UI, и о том что его достаточно просто полноценно цеплять к TeamCity (в отличии от Sahi, который мы использовали). Но при более глубоком знакомстве возникли вопросы по поводу тестирования AJAX, и RIA web приложений, написанных на ExtJS. У вас случаем нет паттернов или хороших практик по тестированию сложных Web приложений с Ajax (чтоб без delay и sleep через строчку)? Было бы очень интересно узнать ваш опыт, как вы обходите подводные камни, думаю для многих он окажется ценным (особенно для меня).

Ещё раз спасибо за статью!
Некоторые (но не все) проблемы «delay и sleep через строчку» мы решили выключением анимации в jQuery (в базе у нас именно он). Соответственно некоторые вещи типа плавного отображения окна и т.п. стали происходить «сразу». Благо анимация в jQ отключается одной командой и не влияет на общую работоспособность.

AJAX запросов и общей готовности страницы мы по прежнему дожидаемся. Я сделал некоторую обвязку над WebDriver чтобы можно было делать не

WebElement element = _driver.getElementById(...);

а

WebElement element = Wait.forElementPresence("ById", "...");

Примерно так, общая суть ясна.
Я делал то же самое (waitForElement). Но буквально две-три недели назад на Хабре проскочила статья, как заставить Селениум ждать исполнения всех AJAX запросов, что в большинстве случаев делает ожидание элементов ненужным, по крайней мере, в моем продукте.
А у Вас случайно ссылки не осталось на эту статью??? Сейчас как раз есть проблема ожидания пока все загрузится, приложение Rich Ajax и мне было бы очень полезно получить любую полезную информацию по данному вопрос.
К сожалению, нет, ссылки не осталось. Если я правильно помню (а было это давно), то было предложено решение типа вот такого: sysmagazine.com/posts/111649

Если продраться через сильно неродной для автора английский и/или смотреть только на код, то становится понятно, куда копать. Надеюсь, вам поможет.
WebDriver = Selenium 2
;)
Насколько я понимаю в SeleniumRC нужен отдельный сервер (как минимум п/о) который будет получать команды «из кода» и транслировать их «подчиненным» браузерам.

Здесь же «подключенны» браузер определяется подключенным «драйвером». + не нужен отдельный сервер.
Selenium 2.0 = Selenium 1.0 + WebDriver

Так что всё, что было — осталось. Но добавился новый движок для управления браузером, через нативные API. Рекомендуется использовать там, где Se 1.0 не справляется.
У них на сайте написано что WebDriver является чем-то вроде расширения Remote Control, которое исправляет недостатки последнего.
У нас кстати вполне нормально для тестов используется Selenium RC + python bindings.
Да, да. Я вот тоже пользуюсь RC + (Java||Python). Интересно, есть ли смысл попробовать WebDriver.
Я еще заметил, что сервер второй версии быстрее работает с IE 8.
Если возможностей 1.0 хватает — пока можете попробовать только из любопытства. Продуктивные тесты переводить на WebDriver ещё рано.

Движок для IE переписывается в каждой очередной бете чуть менее чем полностью. Движок для Chrome косячит при заполнении форм. Движок для Safari вообще ещё не сделан. Движок для Opera не запускается на Vista и Win7. В общем, всё ещё сырое. Ну, если только на Firefox надо тестировать — тогда можно, там всё уже достаточно стабильно работает.
Selenium RC (remote control) — сервер запускается отдельно, на любой машине, локальной или удаленной (что удобно для проверки на разных платформах), который запускает браузер и прогоняет тесты. В самом же скрипте теста указывается к какому серверу ему подключаться, какой браузер запускать и тд.
Ещё бы такие драйвера для Flash и Silverlight :(
у меня для ASP.NET отлично прижилась конфигурация TeamCity + Selenium RC + CassiniDev
Пока используем WebDriver для основных сценариев. Всё-таки пока ещё очень и очень сыро, особенно в контексте сложных AJAX решений. Даже в IE порой сложно добиться каких-то вещей. Бывает, что в FF работает, а в IE — наотрез, и наоборот. Хром после первой попытки — в сторону отставили.

Будем ждать, альтернатив практически нет или в таком же состоянии.
Та же ерунда с поддержкой браузеров. Сейчас гоняем в IE и FF. В Chrome злые баги в базовом функционале. В Opera даже смотреть боюсь, хотя, кстати, реализация под Opera не от Selenium, а от самих Opera Software.
Хм, а почему а так упорно повторяется «Java и С#»? В FAQ написано
Q: What about support for languages other than Java?
A: Python and Ruby support are already available. Support for C# is planned, and we will be announcing this on the mailing list as they are checked in. There is also a Javascript API (JS API) which is available on Firefox.

Sign up to leave a comment.

Articles