Добрый день, вдохновился здешним форумом и вебинарами (очень понравился вот этот: http://automated-testing.info/forum/problema-pri-zapisi-lokatora , отсмотрел уже половину), взял C#-версию (2.24) и появились вот такие вопросы:
0) не является ли C#-версия "отстающей"? (как это обычно происходит, например, с FitSharp в сравнении с джавовским оригиналом).
1) как получить хэндл окна драйвера? То, что возвращается, является какой-то шуткой:
Chrome -> CurrentWindowHandle
Started ChromeDriver
port=9155
version=22.0.1203.0b
log=C:\Windows\system32\chromedriver.log
f1-2
Chrome ->WindowHandles
Started ChromeDriver
port=9209
version=22.0.1203.0b
log=C:\Windows\system32\chromedriver.log
f1-2
InternetExplorer x64 ->CurrentWindowHandle
Started InternetExplorerDriver server (64-bit)
2.24.2.0
Listening on port 9263
6cc32c42-d3b8-4a89-a11a-e32098b9b4f6
InternetExplorer x64 ->WindowHandles
Started InternetExplorerDriver server (64-bit)
2.24.2.0
Listening on port 9293
b5f4b7c4-f41e-492d-ad6e-d42f3b0c2858
кто-нибудь знает, как получить хэндл в int или в IntPrt, или процесс окна? Тайтл, понятное дело, не уникален. Без хэндла окна невозможно получить экранные координаты элемента, к примеру, потому что координаты элемента отмеряются даже не от окна, а от контейнера страницы.
2) как получить элемент, родительский только что полученному (в принципе, код на любом языке мне подойдёт для прочтения)?
3) драйверы отчего-то выдают кучу мусора в коммандлайн - есть _штатные_ средства для избавления от этого? (скрыть я могу, но вдруг есть штатные средства).
4) PageObjectPattern - это термин из селениума или из более широкой области (что-нибудь с вэб-программированием)? Хотелось бы почитать что-то теоретическое по этой теме.
5) А можете, коллеги-тестировшики, выложить куски кода из произвольных проектов? Интересует сама организация кода.
6) В классическом примере из доки http://seleniumhq.org/docs/03_webdriver.html : запустить браузер, навигировать на гугль, взять окошко ввода, записать туда Cheese и засабмитить (или не засабмитить, без разницы) - я не могу получить Text из этого IWebElement. Почему?
<input class="gbqfif" disabled="" autocomplete="off" style="border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%; position: absolute; z-index: 1; background-color: transparent; color: silver; left: 0px; visibility: hidden;" id="gs_htif0" dir="ltr">
Насколько я понимаю, Text никак не относится к коду элемента, а формируется драйвером на основе данных в контроле? Так отчего же он этот Text не возвращает?
7) Кстати, о координатах: пробовал не только ((IWebElement)element).Location.X, но и через RemoteWebElement -> Coordinates.LocationOnScreen.X - и это возвращает в координатах от окошка, а не от десктопа. Именно, не ошибка в отсутствии преобразования логических координат в физические или обратно, я линейкой мерял :), а возвращает от левого верхнего угла десктопа.
8) Как делаются продолжительные истории на веб-драйвере? Вот пример из вчера: сайт omena.com (omenahotels.com, omenahotelli.fi и т.д.). Сам по себе сайт неплохой, более-менее удобно выбирать дни (нууу, ну удобно), чувствуется, что или сайт немного протестили руками, или юнит-тестами. Потому что когда начинается что-то продолжительное, начинается сущий ад.
Когда начинаешь заносить свои данные (требуется внести данные за всех жильцов!!), эта форма проверяет ввод, не допускает неуникальных номеров тлф (ребёнку 5 лет всегда даю номер второй симки :):) бред). Если я не залогинился, то не даёт ввести мой имейл (я уже под ним зареган). Чтобы войти, в русской версии это называется Регистрация (а не Логин), пришлось сверяться со шведской и англ версиями.
Мне надо было взять три не связанных периода в двух гостиницах, пришлось проходить этот кошмар с вводом паспортных данных три раза. В какое-то время что-то там экспирировало (вроде, сессия того), я остался залогинен (!), но не мог внести свой имейл (!!), потому что "от другого юзера". Пришлось разлогиниваться, потом снова пасп данные вводить.
Если бы у сайта был линк, куда послать баги, багов двадцать я бы им кинул (увы, эти самодовольные вэб-мастера очень редко делают такие линки, или я линк этот не заметил).
Вопрос: интересует, как тестируются такие длинные истории. За одну длинную сьюту? Как это принято делать? В данном случае оказалось, что первый цикл вбития данных и оплаты гораздо легче последующих. Т.е., делает ли кто-нибудь такие сценарийные тесты и как это вообще (получается, работает, подводные камни)?
Если что, на указанном сайте я всего лишь пользователь, недовольный пользователь (кстати, последний раз был номер, в котором освещение в туалете включалось вместе со всем вообще освещением. Одно удобство, что можно заказать номера через инет).
Заранее спасибо!