Перейти к содержимому

Публикации leipreachan

94 публикаций создано leipreachan (учитываются публикации только с 30 марта 2023)



#129715 Запуск тестов в одном браузере

Отправлено автор: leipreachan 17 апреля 2014 - 11:03 в Selenium - Functional Testing

Всем добрый день!!!

Вопрос такого плана(С#).

Вообщем есть несколько тестов.

Gо окончанию теста браузер закрывается и снова идет запуск.

Как реализовать, чтоб прошли все тесты и браузер был закрыт только после окончания последнего теста.

Спасибо!!!

 

Обычно тестовый фреймворк закрывает сессию (и браузер) в tearDown() методе (или его аналоге)

 

Вам следует переопределить tearDown(), чтобы сессия не закрывалась автоматически, а закрывалась только, например, в tearDownAfterClass().

Разумеется, в setUp() методе следует проверять наличие активной сессии.

 

У меня так и реализовано.

 

Если вы хотите перекидывать сессию и между классами тоже, то вводите класс посредник, который будет заниматься такой задачей. Обычный синглтон, например.




#129440 Запуск удаленного selenium-сервера

Отправлено автор: leipreachan 11 апреля 2014 - 11:15 в Selenium - Functional Testing

То есть selenium-server необходимо поставить и на виртуалке и на своей машине?

нет, только на виртуалке. подключаться к нему по адресу, который получает виртуалка (ip addr в консоли) + порт.




#129044 Репортинг для WebDriver-тестов и не только

Отправлено автор: leipreachan 03 апреля 2014 - 15:43 в Selenium - Functional Testing

тысячи их, а конкретно - это CI-системы. TeamCity, Jenkins, Bamboo, Travis, Cruisecontrol, Hudson и т.п.

Если вам нужно специально под Selenium - тогда либо нужна доработка в вашем фреймворке, либо специальный плагин для CI-сервера.




#128944 Выбор из выпадающего списка

Отправлено автор: leipreachan 02 апреля 2014 - 13:46 в Selenium - Functional Testing

 

Протестировал оба варианта на FF 28.0, среднее время поиска локатора составило 25 мс в обоих случаях (30 опытов на 100000 option'ах).

Вы правы - мой фейл. Время во всех браузерах примерно одинаковое. Только одна опера (12.16) честно пытается создать сет нодов и падает по таймауту через WD+OperaDriver, либо виснет очень надолго, если ручками через dragonfly.

В общем так я от вас и не услышал, почему имея такой сорс





<body>
  <select>
    <option>a</option>
    <option>b</option>
  </select>
</body>

правильнее писать (//select/option)[1], а не //select/option[1]? При том, что наличие у select других чайлдов, отличных от option - это хак,баг и провокация. А при использовании сета есть вероятность "влететь" в совершенно другой селект.

 

в случае вашего примера - всё одинаково

 

По поводу хаков-багов-провокаций: в select можно запихнуть, например, <input type=hidden/>. Это вообще никак не скажется на вёрстке. А вот на отправке формы - может сказаться.




#128938 Выбор из выпадающего списка

Отправлено автор: leipreachan 02 апреля 2014 - 11:16 в Selenium - Functional Testing

Нет. Мопед не мой - это дэвы. Если вас это смущает - замените id на name например - это сути не меняет.

я бы багу влепил за такой HTML. Так делать нельзя (раз)

 

Расширим пример до:

<select id='county'>
  <option>1</option>
  <option>2</option>
</select>
<select id='county'>
  <option>3</option>
  <option>4</option>
</select>

вы ведь в курсе, что //select/option[2] выберет два элемента?

Полагаю, топикстартеру важнее выбрать, всё-таки, ОДИН элемент




#128931 Выбор из выпадающего списка

Отправлено автор: leipreachan 02 апреля 2014 - 08:54 в Selenium - Functional Testing

Парни, я прекрасно знаю что такое предикаты, node-sets, context и т.д. И вполне себе понимаю разницу между (//h3)[2] и //h3[2].

По производительности: давайте я "откомпилирую" эти выражения
1. //select[@id='country']/option[1] - браузер серчит DOM с начала, находит <select id='country'>, берет первый чайлд <option>, применяет к нему предикат [position()=1], получает тру => искомый элемент найдет => коней
2. (//select[@id='country']/option)[1] - браузер серчит DOM с начала, находит <select id='country'>, собирает *всех* чайлдов <option> (которые нам абсолютно не нужны), и идет гулять дальше по DOM выискивая новых кандидатов.
Какой вариант будет быстрее? Подсказка - select с 100К опциями во втором варианте отправил Opera'у в нокаут минут на 20.

По "счастливому стечению обстоятельств" и стабильности:
//select[@id='country']/option[1] - я точно знаю, что ищу: опцию в селекте, которая является первым чайлдом.
1. Если у селекта первый чайлд не option (optgroup во внимание не берем) - это баг => тест должен упасть.
2. Если имеет место быть



<select id='county'>
  <option>1</option>
</select>
<select id='county'>
  <option>3</option>
</select>
То //select/option[2] приведет к вполне ожидаемому фейлу, при(//select[@id='county')[2] выберет первое значение второго селекта, что не совсем ответствует ожиданиям.

 

 

у вас html с проблемкой: два элемента с одинаковым id. Вас это не смущает?




#128930 Зависимые тесты

Отправлено автор: leipreachan 02 апреля 2014 - 08:51 в Selenium - Functional Testing

Хорошо, зайдем с другой стороны. Функционал "создать учреждение" частично работает - учреждение создается, но в него невозможно добавить здания. Причем если создавать учреждение через api, или лить напрямую или через хранимки в базу - функционал "создать здания в учреждении" работает. Т.е. тесты проходят, но совокупный функционал приложения не работает.

 

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

 

Мне кажется, это (то, как организовывать тесты) уже вопрос идеологический и к селениуму уж точно никакого отношения не имеет.




#128923 Связка WebDriver + TestNG + Bamboo

Отправлено автор: leipreachan 02 апреля 2014 - 07:23 в Selenium - Functional Testing

Тут требование клиента, так что...

соболезную =)




#128909 Selenium+PHPUnit: как одновременно запустить тест параллельно в разных

Отправлено автор: leipreachan 01 апреля 2014 - 15:08 в Selenium - Functional Testing

Не, Леприкон, тут другое, один тест одновременно на разных браузерах, хотя, вопрос сомнителен...

А там простое параллельное исполнение разных тестов.

для java это можно сделать через dataprovider (т.к. параллелить там проще), в пыхе - через кастомный скрипт. Вроде бы соус лаб как раз в скрипте и оставлял лазейку для опций. Но вы правы, вопрос незначительно отличается. Окей




#128908 Выбор из выпадающего списка

Отправлено автор: leipreachan 01 апреля 2014 - 15:02 в Selenium - Functional Testing

Абсолютно не очевидно - как и ваш ответ с соседней теме.
Покажите разницу между (//select[@id='country']/option)[1] и //select[@id='country']/option[1].
Могу подсказать что эти варианты отличаются как минимум производительностью, а первый вариант имеет достаточно "подводных камней".

 

оператор [] в xpath имеет больший приоритет, чем //

ваше выражение возвращает массив из N элементов и выбирает все опции, которые являются первым потомком select. Т.е., опять же все :)

 

Пояснение есть, например, тут: http://stackoverflow...text-with-xpath

 

Ну, и в конце концов, проверьте.

Далеко ходить не надо - проверьте, какой элемент на этом топике //h3[2], а какой (//h3)[2]

Выражение Виталия выбирает все опции в массив, а из них уже получает первое




#128905 Связка WebDriver + TestNG + Bamboo

Отправлено автор: leipreachan 01 апреля 2014 - 14:47 в Selenium - Functional Testing

 

К чему теория, просто запустите Bamboo и вперёд!

Появятся проблемы -- приходите и задавайте вопросы :)

Появился вопрос - хочу запускать webdriver тесты на отдельной машине. Опыта с Bamboo нет. Девы на днях переведут проект на Bamboo, следующим шагом будет попробовать запускать unit тесты и ui тесты. UI тесты (Selenium Webdriver) пока запускаю у себя на машине с командной строки при помощи maven. В какую сторону копать? С чего вообще начать? Bamboo должен удалённо запускать тесты на отдельной машине и получать оттуда результаты. 

 

Bamboo, по моему личному мнению - крайне глючная вещь. Лучше Jenkins используйте.




#128904 Selenium+PHPUnit: как одновременно запустить тест параллельно в разных

Отправлено автор: leipreachan 01 апреля 2014 - 14:46 в Selenium - Functional Testing

 

Дайте угадаю, а браузеров должно быть очень (т.е. под сотню - две) много?

Один тест и разные браузеры googlechrome, ie, firefox

 

вы это уже третий или четвёртый раз спрашиваете, серьёзно.

Вам же дали даже пример кода на PHP, как это реализуется в sauce labs




#128903 Зависимые тесты

Отправлено автор: leipreachan 01 апреля 2014 - 14:45 в Selenium - Functional Testing

их независимость позволяет реализовать две вещи:

1) параллельный запуск тестов

2) падение одной компоненты не будет останавливать работу всего набора.




#128853 как переключиться на новую, открытую тестом вкладку?

Отправлено автор: leipreachan 01 апреля 2014 - 07:33 в Selenium - Functional Testing

1)тест запускает форму,

2)нажимает на кнопку - открывается новое окно (или вкладку)

3)пытается найти элемент на вкладке (ищет на старой, необходимо на вновь открытой) - вылетает ошибка/исключение...

 

вопрос - как переключить тест на вновь открытую самим тестом вкладку?!

 

 

             if (selenium.IsElementPresent( "xpath=(//a[contains(text(),'Баланс')])["+i+"]" ))//если существует
                selenium.Click("xpath=(//a[contains(text(),'Баланс')])["+i+"]");//нажимаем баланс у №-нного контрагента        
            selenium.WaitForPageToLoad("30000");

            //это должно быть уже на новой вкладке
            selenium.Select("id=year", "label=2013");//год 2013

открывайте новые окна, а не вкладки. В настройка FF измените это и всё.




#128803 Headless запуск Selenium WebDriver

Отправлено автор: leipreachan 31 марта 2014 - 08:56 в Selenium - Functional Testing

Вопрос наивный, но всё же:

 

C:/phantomjs-1.9.7-windows/phantomjs.exe

 

по этому пути у вас драйвер запускается?




#128725 Headless запуск Selenium WebDriver

Отправлено автор: leipreachan 27 марта 2014 - 07:45 в Selenium - Functional Testing

у вас всё выпытывать?=)

 

как запускаете? ошибку?




#128708 Headless запуск Selenium WebDriver

Отправлено автор: leipreachan 26 марта 2014 - 15:16 в Selenium - Functional Testing

Провозился сегодня полдня с фантомJS. В итоге ошибку(org.openqa.selenium.remote.unreachablebrowserexception) обойти не удалось. 
Может кто-нибудь более популярно объяснить как его прикрутить к селениуму?
Нашел такую статейку (http://www.appneta.c...d-testing-java/). Вроде бы все популярно расписано, но делаю все так же, а ошибки сыпятся и сыпятся(

 

у вас именно запуск не работает или на этапе теста падает?




#128687 Headless запуск Selenium WebDriver

Отправлено автор: leipreachan 26 марта 2014 - 09:01 в Selenium - Functional Testing

Т.е. на самом деле встречали такую ситуацию когда WebKit'овый браузер (та же версия движка) отрабатывает без проблем, а PhantomJS не фурычит?

 

Смотря что считать "другим webkit-овым" браузером. Хром? Да, он спокойно отрабатывает. Сафари пробовали (но не на регулярной основе) - тоже работает




#128599 Headless запуск Selenium WebDriver

Отправлено автор: leipreachan 25 марта 2014 - 08:02 в Selenium - Functional Testing

Фантом штука интересная, но если сложный ajax на странице и вёрстка не очень простая, то там оооочень много возни может быть.

Например, в хроме и firefox (и в IE) все тесты работают, а в фантоме какой-нибудь клик ничего не делает.

И сиди там, дебажь.. =(




#128351 Удержание фокуса на элементе

Отправлено автор: leipreachan 18 марта 2014 - 11:09 в Selenium - Functional Testing

leipreachan, cпасибо за ответ.

Тесты у нас на 4х машинах, все под линуксом. Но, к сожалению, тестов намного больше.

Инетересует именно к/л возможность удерживать фокус при помощи кода. Или единственный способ прямо "жестким" способом залазить в DOM страницы? Или, на крайний случай, может быть есть какая-то логика в том когда фокус перескакивает с теста на тест (пока мне кажется, что это происходит случайным образом)? 

 

Используйте XVFB, если у вас всё под линуксом. Поднимите больше selenium-серверов и каждый с одним инстансом браузера

 

Логика переключения простая - каждое действие (кроме ожидания элемента) приводит к потере фокуса остальными окнами. С точки зрения OS невозможно держать два окна одновременно в фокусе =)




#128346 Удержание фокуса на элементе

Отправлено автор: leipreachan 18 марта 2014 - 07:19 в Selenium - Functional Testing

Здравствуйте,

 

возникла следующая проблема. Имеется в наличии много тестов, разных веб-приложений, которые запускаются автоматически при изменениях в системе (для этих целей используем Jenkins). К сожалению случается, что запускаются 2 теста в одно и то же время на одной и той же машине. И эти тесты друг у друга то и дело крадут фокус. Все бы ничего, но в наличие есть тесты, где при потере фокуса происходит к/л событие (где-то javascript, где-то ajax), из-за которого тест не проходит.

Не сталкивался ли кто с такой проблемой? И как она решается? К сожалению, распределить тесты полностью так, чтобы они бежали в разное время или на разных машинах, нет возможности.

 

Запускайте на разных машинах =)

или на одной, но используйте xvfb, если под линуксом.

Второй вариант: "исправлять" JS, чтобы элементы не реагировали на смену фокуса.




#128308 Ожидание появления элемента

Отправлено автор: leipreachan 17 марта 2014 - 07:35 в Selenium - Functional Testing

На сайте имеется кнопка, при нажатии на которую появляется pop-up с выпадающим списком, на который необходимо нажать.

Тем не менее, иногда браузер не успевает отобразить выпадающий список и генерируется ошибка. WaitElement() и Thread.sleep() по какой-то причине иногда не помогают.

Подскажите, пожалуйста, как решить проблему?

Забегая вперед, как вариант - перед нажатием проверять, что элемент имеет размеры более определенных значений, но не знаю как это реализовать.

 

popup с выпадающим списком? это отдельное окно в IE или это какой-то элемент сайта, который маскируется под обычный попап?




#128277 Тестовое задание на собеседование ufs-online.ru

Отправлено автор: leipreachan 14 марта 2014 - 12:44 в Selenium - Functional Testing

"Ядро фреймворка" - это собственный четырех-колёсный "велосипед", который есть практически у каждого :)

Тест - это код, который представляет из себя последовательность шагов и проверок, и не важно насколько эта последовательность децентрализована.

я, почему-то, и так был уверен, что вы говорите именно о testcase.

 

лично моя точка зрения, что "везде можно обойтись без условий и циклов" - вот это утверждние категоричнее некуда. и с ним я не согласен.

а в том, что тест должен быть просто и циклы и условия там просто не нужны (без необходимости) - да, тут согласен.




#128273 Тестовое задание на собеседование ufs-online.ru

Отправлено автор: leipreachan 14 марта 2014 - 11:54 в Selenium - Functional Testing

Вопрос был про Java - в ней нет оператора безусловного перехода
 

 

упустил, что вы говорили только о Java.

 

 

Я не совсем понимаю, что вы имеете ввиду под словом "логика". Всяческие сложные конструкции имеют место быть в ядре фреймворка, но это не относится ни к AUT ни к тестам. Если под "логикой" вы имеете ввиду моделирование поведения AUT - то это должны делать непосредственно сами тесты.

 

 

под логикой я понимаю бизнес-логику.

тогда я не понимаю, что вы имеете в виду под "ядром фреймворка"?!

Selenium?

что такое тест? метод?




#128270 Тестовое задание на собеседование ufs-online.ru

Отправлено автор: leipreachan 14 марта 2014 - 11:11 в Selenium - Functional Testing

 

Вы путаете понятия условный переход и ветвление. В цикле ветвления нет - есть условный переход.
Если вы покажите как организовать цикл в Java используя только последовательное выполнение команд и ветвление - я буду аплодировать сам стоя.

 

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

 

 

Ну как бы есть goto, который, хоть и считается плохим тоном, но всё равно существует почти во всех языках.

 

Или я вас совсем перестал понимать

 

 

 

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

А как можно использовать повторно атомарное действие специфичное только для данного теста?

 

всё зависит от тестового плана. возможно, это не специфичное действие.

 

Я ещё раз у вас спрашиваю - правильно ли я понимаю, что вы вводите такие строгие критерии исключительно к тестам? А обёртка вокруг них уже может быть начинена логикой?