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

leipreachan

Регистрация: 26 ноя 2013
Offline Активность: 22 окт 2014 11:09
-----

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

Написано leipreachan 02 апреля 2014 - 08:51

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

 

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

 

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


  • 1


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

Написано leipreachan 01 апреля 2014 - 15:02

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

 

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

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

 

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

 

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

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

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


  • 1


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

Написано leipreachan 18 марта 2014 - 11:09

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

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

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

 

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

 

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


  • 1


#125035 Изменение профиля в процессе работы.

Написано leipreachan 13 декабря 2013 - 07:38


Вы пытаетесь решить проблему не тем способом. Вам нужно научиться определять изменение страницы, ведь так?
Попробуйте рассуждать логически - как вы сам определяете, что она загрузилась? По изменению какого-то текста? По появлению элемента? По исчезновению элемента?
Вот от этого и надо писать тест.

Все так, за исключением одного "но". Приведу пример, чтоб понятней было:
Есть страница с капчей. я ввожу капчу и начинаю анализировать появилась ли следующая страница по появлению соответствующих элементов.
Но! Капчу можно решить неправильно и загружается не новая, а та же самая страница с капчей. И вот, все в шоке :)
Приходится еще и мониторить не появились ли те же элементы, что и на странице капчи. То есть, например, будем отслеживать - не появилась ли опять капча. Все бы хорошо, но вступает в силу очередной закон подлости :)
Прикол в том, что когда начинает грузиться страница, то старая еще не пропала, а некоторое время еще висит и Селениум может, как ни странно, с этой страницей работать. И как результат, он находит капчу, но не новую, а старую, и считает, что... да что угодно считает, но считает он это неправильно.
Это только лишь один из примеров тупиковых ситуаций.
Да, кстати, в цикле пробовал анализировать не пропал ли элемент (в нашем случае капча) в промежутке между сменами страниц и только потом запускать процедуру анализа какая страница загрузилась. Но и тут очередной прикол. Иногда, следующая страница появляется практически без паузы. То есть висит еще видимая старая, при этом грузится новая в фоне.. и в какой-то момент бах! - и отрисовалась новая. И Селениум не успевает отследить пропадание, и мы повисаем в бесконечном цикле. Ну, конечно, не бесконечном - из него выходим по прошествии какого-то времени, но все это время мы висим и гоняем впустую процессорное время :)


по пунктам:
1) страница с капчей не выдаёт сообщение "вы неправильно ввели капчу"? Это странно. Если выдаёт - можете на это ориентироваться. Если не выдаёт - следует подумать над этим, т.к. я бы сам удивился, если бы мне ничего не говорили, а просто перезагружали страницу.
2) Ориентируйтесь на src картинки с капчей. Перед вводом значения запоминайте её id, что угодно (обычно у неё адрес что-то вроде captcha.php?id=dkfjgkjdshf). Потом проверяйте, что он изменился. Или у вас капча имеет вид captcha.php ?
3) Если уж совсем туго, можете воспользоваться JS: добавляйте через document.body.addChildren какой-нибудь невидимый input type="hidden". Наверное, даже, его лучше прибавлять к футеру. Как только он исчезнет - страница начала перезагрузку.
4) Да, анализ "исчезновение - появление" может быть забагованным. Им пользоваться нужно оочень осторожно. Хороший JS-код может поменять DOM страницы достаточно быстро и селениум ничего не может с этим поделать.
тупиковых ситуаций не бывает =)

В firebug (и в стандартных девтулз Firefox) есть инструмент, который позволяет подсветить изменившиеся элементы. Попробуйте посмотреть, где происходят изменения.
  • 1