morontt.info

Тестирование → Установка Sahi

Sahi Dashboard

Думаю написать пару записей про автоматическое тестирование в веб-разработке. Не потому, что информации по этой теме не хватает, а для того, чтобы у меня это было всегда под рукой :) Сразу всё в одной заметке не опишешь, конечно, так что буду по частям. Сегодняшняя часть будет про Sahi.

Если в двух словах, то это некий драйвер, который будет самостоятельно кликать по кнопкам и ссылкам, заполнять поля форм и выполнять прочие операции на сайте. Самостоятельно - это немного не то слово, будет происходить именно то и только то, что описано в тестовом сценарии. В отличии от других (но не всех, конечно) "эмуляторов" браузеров, Sahi умеет работать с динамическими веб-приложениями, т.е. AJAX и прочий javascript ему по зубам. Ладно, закончим с лирическим вступлением...

Идём на официальный сайт, перемещаемся в раздел с Open Source версией и кликаем на загрузку. Скачиваем. Скачается, скорее всего, jar-файл, но бояться его не стоит, всё отлично запустится и установится, если, конечно, Java JDK (или JRE) уже установлен.

Далее перемещаемся в раздел с документаций. Там читаем как запустить Sahi Dashboard. Либо ярлык в панели пуск, либо bat-файл по адресу /path/to/sahi/userdata/bin/sahi_dashboard.bat. На этом этапе меня поджидала неожиданность, т.к. этот самый дашборд отказался запускаться. Но у нас есть командная строка, где можно посмотреть ошибки, если они туда выводятся.

"java не является внутренней или внешней командой, исполняемой программой или пакетным файлом."

Sahi и отсутствующая java

Лечение элементарное, надо прописать в Дополнительные параметры системы → Переменные среды → Path путь к бинарным файлам Java JDK (или JRE). У меня это, например, C:\Program Files (x86)\Java\jre6\bin. Речь идёт о Windows, естественно, если кто не понял :)

Казалось бы всё, программа должна запускаться и функционировать, но не тут то было. Смотрим в командную строку и видим, что Sahi Dashboard не может обнаружить браузеры, которые прописаны в /path/to/sahi/userdata/config/browser_types.xml. Открываем и редактируем пути. Должно получиться что-то вроде такого:

<browserTypes>
    <browserType>
        <name>firefox</name>
        <displayName>Firefox</displayName>
        <icon>firefox.png</icon>
        <path>$ProgramFiles\Mozilla Firefox\firefox.exe</path>
        <options>-profile "$userDir/browser/ff/profiles/sahi$threadNo" -no-remote</options>
        <processName>firefox.exe</processName>
        <capacity>5</capacity>
    </browserType>
    <browserType>
        <name>ie</name>
        <displayName>IE 9</displayName>
        <icon>ie.png</icon>
        <path>$ProgramFiles\Internet Explorer\iexplore.exe</path>
        <options>-noframemerging</options>
        <processName>iexplore.exe</processName>
        <useSystemProxy>true</useSystemProxy>
        <capacity>5</capacity>
    </browserType>
    <browserType>
        <name>chrome</name>
        <displayName>Chrome</displayName>
        <icon>chrome.png</icon>
        <path>$ProgramFiles\Google\Chrome\Application\chrome.exe</path>
        <options>--user-data-dir=$userDir\browser\chrome\profiles\sahi$threadNo --proxy-server=localhost:9999 --disable-popup-blocking</options>
        <processName>chrome.exe</processName>
        <capacity>5</capacity>
    </browserType>
    <browserType>
        <name>opera</name>
        <displayName>Opera</displayName>
        <icon>opera.png</icon>
        <path>$ProgramFiles\Opera\opera.exe</path>
        <options> </options>
        <processName>opera.exe</processName>
        <useSystemProxy>true</useSystemProxy>
        <capacity>1</capacity>
    </browserType>
</browserTypes>

Да, Safari у меня пока ещё не установлен :) Ну вот как бы и всё. Запускаем и наблюдаем правильную панель управления Sahi, которая красуется на первой картинке к этой записи. Собственно об автоматизированных тестах как-нибудь в другой раз.

g-plus-icon
comments powered by Disqus
Учтите, что комментарии добавляются только при включённом JavaScript в браузере. В ином случае информация хоть и не пропадёт бесследно, но будет отправлена в спам и вряд ли хоть кто-нибудь её увидит.
SlowProg
avatar
Хорошее начало с описанием подводных камней! Буду ждать продолжение. Надеюсь не заставить себя оно ждать =) А то самому пробовать пока лень =)
Ответить
morontt
avatar
Раз уже есть читатель, то затягивать не буду, а то пост мог бы появиться и через месяц :-) Время то летит.
Ответить
Penguin
avatar
Проверка передачи почты по SSL
Ответить
morontt
avatar
Работает, пенгвиниус :)
Ответить
Sadnes
avatar
Добрый день. Я изучаю разработку автотестов с помощью Sahi, кому интересно, давайте разбираться вместе. Мне очень нравится программа. Все намного проще и понятнее в сравнении с тем же Selenium. Я пока могу создавать простые тесты и использованием функций. На данном этапе изучаю создание тестов с использованием if и for.
Можно организоваться в конфе скайпа, если будет желание стучите в мой Skype: proxodnoydvor
Ответить
morontt
avatar
Можно разбираться вместе прямо здесь, я никакой такой секретной информацией не располагаю, чтобы организовываться в скайпе. Если есть вопросы и/или ответы, то, думаю, что это будет интересно всем, попавшим сюда.
Ответить
morontt
avatar
А меня вот Selenium впечатлил куда больше Sahi, им теперь только и пользуюсь. Тесты отрабатывают разов в 4-5 быстрее :)

Только "шевеляться" эти сахи и селениумы PHP-приложением, посредством соответствующего драйвера, т.е. для меня всё различие заключается в одной строчке конфигурации. Как эти инструменты выглядят ближе и сами по себе - не знаю.
Ответить
Чайник
avatar
А будет статья про програмирование тестов на java c использованием Framework Sahi? A то установили, а как тесты то разрабатывать?
Ответить
Sadnes
avatar
у меня вроде в конфиге все как надо.. но почему то все равно браузеры не видит
Ответить
morontt
avatar
Это смотря какая винда. У меня, например, 64-битная семёрка и помогло изменение пути с <path>$ProgramFiles (x86)\Opera\opera.exe</path>, которое прописалось автоматом, на <path>$ProgramFiles\Opera\opera.exe</path>, например, хотя браузеры лежат именно в папках с (x86)
Ответить
Sadnes
avatar
это в винде.. пол убунтой все отлично без каких либо вмешательств
Ответить
morontt
avatar
Давно собираюсь поработать дома в каком-нибудь линуксе, но руки всё не доходят :)
Ответить
Sadnes
avatar
да я уже все настроил, спасибо
мне сил не очень подходит из-за проблем с java а вообще есть мысль освоить Test Complite
Ответить
morontt
avatar
Я с TestComplete не сталкивался никогда, да и не знал о его существовании до твоего комментария :) Пока потихоньку покрываю тестами этот блог с использованием свободного инструментария.
Ответить
Sadnes
avatar
у меня вот другая проблема, не могу правильно составить условие для функции if
мне необходимо, найти на странице элемент, в виде картинки например, и в случае если этот элемент есть, сделать одно действие, если нет, другое.
Если подскажешь как правильно составить условие, буду благодарен.
Я объявляю переменную, заношу в нее значение полученное из Sahi путем зажатой клавиши ctrl и выбора элемента. И это же значение пишу в условии if, но условие не выполняется.
Ответить
morontt
avatar
Слишком расплывчато всё описываешь, я могу только догадываться о конкретной проблеме. Могу так же расплывчато ответить → Если нужно правильное условие на для if, то оно имеет такой вид:

если (есть искомая картинка на странице) то { одно... } иначе { другое... }
Ответить
Sadnes
avatar
да я уже разобрался, спасибо) доки не внимательно прочитал
Ответить
morontt
avatar
Это частая причина необъяснимых глюков :)
Ответить
morontt
avatar
Тест уведомлений
Ответить
Sadnes
avatar
да все работает, спасибо)
сейчас как раз занимаюсь переводом доков по Sahi так как в англ не силен.
Ответить
morontt
avatar
И хорошо, что работает. С английским у меня тоже проблемы, хватает только на поверхностный просмотр документации, но тот же google-translate выручает :)
Ответить
Sadnes
avatar
Ну пока что мне хватает его знаний для простых задач. Добавление данных, редактирование, наполнение БД, удаление и так далее. Но в будущем конечно придется углубляться. Особенно когда речь пойдет о удаленной работе автотестов, запуска целых сценариев и так далее. Проект большой. Сейчас больше сложности с организацией автотестов недели с технической ее частью.
Ответить
morontt
avatar
А что за проект, если не секрет?
Ответить
Sadnes
avatar
ПО для мед клиник
Ответить
Sadnes
avatar
Кстати, Sahi поддерживает возможность сохранения каких либо еррор листов без падения посреди сессии? Например, мне необходимо протестировать три раздела в один запуск. То есть включить и уйти. Вот надо, что бы программа найдя баг в первом разделе, продолжала проверять остальные.
Может подскажите как это сделать в Sahi?
Ответить
morontt
avatar
Я не использую Sahi в чистом виде, он подключён через драйвер к другой штуке, которой я тестирую. Это Behat и Mink, включённые через определённое расширение в проект на Symfony2. Описывал это в следующей записи

Там тесты идут по очереди, если тестовый сценарий не проходит, то он пропускается с пометкой об ошибке и тесты идут дальше.

А как у тебя это происходит - не знаю. И подсказать сходу ничего не могу.
Ответить
Sadnes
avatar
попробую сам разобраться
Ответить
morontt
avatar
Это правильно. Сам не разберёшься - за тебя никто не разберётся :)
Ответить
Хельга
avatar
Отличную тему решили развить, об этом действительно мало где можно почитать.
Буду ждать других статей про веб-тестирование, такое ощущение что мысли мои угадали, давно интересуют этой темой, но все руки не доходили покопаться.
Ответить
morontt
avatar
Да такое дело, что имеется информация, дабы писать, только времени на это не хватает. Но буду, раз кому то это нужно.
Ответить
Vika
avatar
Morontt, спасибо за организацию продвижение данной темы.
Очень не хватало такой информации, все очень подробно и доступно.

Я начинающий тестировщик, и надеюсь Вы меня простите за, возможно глупый, вопрос: - я правильно понимаю, если программа которую я тестирую пишется на C#, то я не могу использовать Sahi для авто-тестов, т.к. она работает с Java?
Ответить
morontt
avatar
Если вкратце, то нет, неправильно. Я, например, пишу веб-приложения на php и успешно использую и Sahi, и Selenium, которые написаны на Java, если не ошибаюсь.
Ответить
Чайник
avatar
Куда-то мой комент вставился в середину. Прошу прощения за повтор здесь:
Будет статья про программирование тестов на java c использованием framework Sahi? Хотя бы самое начало, но именно программирования, а не установки и настройки.
Ответить
morontt
avatar
Статьи про программирование на java в обозримом будущем не будет, т.к. я не java-разработчик. И про сам Sahi тоже, перешёл на использование Selenium, так как он в разы быстрее, а разница между 5 и 15 минутами ощутима, когда тестовых сценариев много.

Есть ещё такой момент. Сам Sahi или Selenium для меня лишь строчка в конфиге, по большому счёту, а тесты пишу с использованием Mink/Behat, получаются более-менее человекопонятные сценарии при минимуме программирование. Хотя оно тоже надо, и необходимо понимать, что умеет тот или иной драйвер, который, собственно, тесты и гоняет.
Ответить
34 комментария Написать что-нибудь
Поля, помеченные asterisk, обязательны для заполнения.
Адрес электронной почты нигде не отображается, необходим только для обратной связи.
Веб-сайт вводите в формате http://example.org, при желании, конечно.