Как закрыть мессадж бокс, появляющийся на onload?
#1
Отправлено 13 октября 2008 - 10:14
Пока думаю заюзать winapi, но немного напрягает трудоемкость этого решения (под каждый браузер свой код придется писать) + надо будет еще доп приложение ставить на стороне сервера selenium. В общем буду рад светлым идеям =)
#2
Отправлено 13 октября 2008 - 10:25
Я так понимаю, что средствами selenium'a его закрыть не получится =( Кто что использует для таких случаев?
Пока думаю заюзать winapi, но немного напрягает трудоемкость этого решения (под каждый браузер свой код придется писать) + надо будет еще доп приложение ставить на стороне сервера selenium. В общем буду рад светлым идеям =)
"мессадж бокс" чей, браузера или ОС? И о чём он?
В Селениуме есть answerOnNextPrompt(), chooseCancelOnNextConfirmation() и т.д., возможно будет полезным.
#3
Отправлено 13 октября 2008 - 10:48
угу про процедуры знаю, только на их использование есть такое вот ограничение"мессадж бокс" чей, браузера или ОС? И о чём он?
В Селениуме есть answerOnNextPrompt(), chooseCancelOnNextConfirmation() и т.д., возможно будет полезным.
как раз мой случайSelenium does NOT support JavaScript alerts that are generated in a page's OnLoad() event handler.
#4
Отправлено 13 октября 2008 - 18:29
В Селениуме уже ооочень давно есть нативные методы (*Native), используй их и будет тебе счастье с любыми неJavaScript-окошками. К примеру можно без проблем управлять окном выбора файла. Кстати, в Селениуме замаплены не все возможности нативных методов, что странно, но это легко доделать.угу про процедуры знаю, только на их использование есть такое вот ограничение"мессадж бокс" чей, браузера или ОС? И о чём он?
В Селениуме есть answerOnNextPrompt(), chooseCancelOnNextConfirmation() и т.д., возможно будет полезным.как раз мой случайSelenium does NOT support JavaScript alerts that are generated in a page's OnLoad() event handler.
#5
Отправлено 14 октября 2008 - 08:05
можно ссылочку на описание (или примеры использования) этих *Native методов, стыдно признаться, но первый раз слышуВ Селениуме уже ооочень давно есть нативные методы (*Native), используй их и будет тебе счастье с любыми неJavaScript-окошками. К примеру можно без проблем управлять окном выбора файла. Кстати, в Селениуме замаплены не все возможности нативных методов, что странно, но это легко доделать.
#6
Отправлено 14 октября 2008 - 10:05
Эээмм... в JavaDoc по драйверу всё написано, вот:можно ссылочку на описание (или примеры использования) этих *Native методов, стыдно признаться, но первый раз слышуВ Селениуме уже ооочень давно есть нативные методы (*Native), используй их и будет тебе счастье с любыми неJavaScript-окошками. К примеру можно без проблем управлять окном выбора файла. Кстати, в Селениуме замаплены не все возможности нативных методов, что странно, но это легко доделать.
/** Simulates a user pressing a key (without releasing it yet) by sending a native operating system keystroke.
This function uses the java.awt.Robot class to send a keystroke; this more accurately simulates typing
a key on the keyboard. It does not honor settings from the shiftKeyDown, controlKeyDown, altKeyDown and
metaKeyDown commands, and does not target any particular HTML element. To send a keystroke to a particular
element, focus on the element first before running this command.
@param keycode an integer keycode number corresponding to a java.awt.event.KeyEvent; note that Java keycodes are NOT the same thing as JavaScript keycodes!
*/
void keyDownNative(String keycode);
/** Simulates a user releasing a key by sending a native operating system keystroke.
This function uses the java.awt.Robot class to send a keystroke; this more accurately simulates typing
a key on the keyboard. It does not honor settings from the shiftKeyDown, controlKeyDown, altKeyDown and
metaKeyDown commands, and does not target any particular HTML element. To send a keystroke to a particular
element, focus on the element first before running this command.
@param keycode an integer keycode number corresponding to a java.awt.event.KeyEvent; note that Java keycodes are NOT the same thing as JavaScript keycodes!
*/
void keyUpNative(String keycode);
/** Simulates a user pressing and releasing a key by sending a native operating system keystroke.
This function uses the java.awt.Robot class to send a keystroke; this more accurately simulates typing
a key on the keyboard. It does not honor settings from the shiftKeyDown, controlKeyDown, altKeyDown and
metaKeyDown commands, and does not target any particular HTML element. To send a keystroke to a particular
element, focus on the element first before running this command.
@param keycode an integer keycode number corresponding to a java.awt.event.KeyEvent; note that Java keycodes are NOT the same thing as JavaScript keycodes!
*/
void keyPressNative(String keycode);
Я добавил для себя ещё несколько команд из java.awt.Robot, типа mouseWhellNative.
#7
Отправлено 14 октября 2008 - 10:15
спасибо за направление, пойду гуглить про java.awt.Robot, и искать аналог для .net, а то с джавой работал довольно поверхностно и про этот пакет ничего не знаю =)Я добавил для себя ещё несколько команд из java.awt.Robot, типа mouseWhellNative.
#8
Отправлено 14 октября 2008 - 11:14
Аналог для .NET не поможет, да и не нужен он. Твои тесты на .NET через драйвер фактически дёргают SeleniumRC по HTTP, а уже он, написанный на Java, использует java.awt.Robot.спасибо за направление, пойду гуглить про java.awt.Robot, и искать аналог для .net, а то с джавой работал довольно поверхностно и про этот пакет ничего не знаю =)Я добавил для себя ещё несколько команд из java.awt.Robot, типа mouseWhellNative.
Если ты хочешь добавить маппинги других возможностей, то тебе надо сделать это именно в SeleniumRC, а не в своих тестах, потом добавить поддержку твоей команды в .NET драйвере и использовать. В этом-то и есть прелесть архитектуры SeleniumRC :)
#9
Отправлено 15 октября 2008 - 08:00
1) мне как бы проще написать еще дополнительный сервер на .net и вынести в него дополнительную логику =) выигрыш для меня будет состоять в том, что не надо возиться с java + при замене selenium rc на новую версию не придется делать дополнительных телодвижений, т.к. selenium отдельно, моя логика отдельно.Аналог для .NET не поможет, да и не нужен он. Твои тесты на .NET через драйвер фактически дёргают SeleniumRC по HTTP, а уже он, написанный на Java, использует java.awt.Robot.
Если ты хочешь добавить маппинги других возможностей, то тебе надо сделать это именно в SeleniumRC, а не в своих тестах, потом добавить поддержку твоей команды в .NET драйвере и использовать. В этом-то и есть прелесть архитектуры SeleniumRC :)
2) *native действительно полезные методы, но они не помогут решить мне следующую задачу.
есть куча тестов, которые в сумме выполняются часов 8. Тесты разбиты на независимые куски, между ними автоматом рестор базы, передергивание сайта и т.д. Сейчас если вдруг мы наткнулись на багу в апликейшине, то у нас возможно появление этого самого мессаджа в онлоад. Который останавливает выполнение скриптов, в силу того что джава скрипт от selenium работает в один поток, ну я так это для себя представляю.
Соответственно нужен некий функционал, который будет проверять, а нет ли у нас этого самого злополучного месаджбокса, и если он появился, то закрывать его. Текущий тест в еррор и поехали дальше. Для этого видимо, все же win api буду юзать.
Решение, путем разнесения тестов по разным тестовым инстансам пока не рассматривается.
vitorg, не вкурсе насколько популярен selenium на российском рынке?
#10
Отправлено 15 октября 2008 - 09:38
Да, здесь есть доля правды :)1) мне как бы проще написать еще дополнительный сервер на .net и вынести в него дополнительную логику =) выигрыш для меня будет состоять в том, что не надо возиться с java + при замене selenium rc на новую версию не придется делать дополнительных телодвижений, т.к. selenium отдельно, моя логика отдельно.
2) *native действительно полезные методы, но они не помогут решить мне следующую задачу.
есть куча тестов, которые в сумме выполняются часов 8. Тесты разбиты на независимые куски, между ними автоматом рестор базы, передергивание сайта и т.д. Сейчас если вдруг мы наткнулись на багу в апликейшине, то у нас возможно появление этого самого мессаджа в онлоад. Который останавливает выполнение скриптов, в силу того что джава скрипт от selenium работает в один поток, ну я так это для себя представляю.
Соответственно нужен некий функционал, который будет проверять, а нет ли у нас этого самого злополучного месаджбокса, и если он появился, то закрывать его. Текущий тест в еррор и поехали дальше. Для этого видимо, все же win api буду юзать.
Решение, путем разнесения тестов по разным тестовым инстансам пока не рассматривается.
Я в таком случае просто ориентировался на подвисание JS, использовал универсальный способ так сказать, делал запрос на выполнение JS "1;" если он не успевал выполниться за время timeout, то я решал, что JS завис (неважно по какой причине: вылетел браузер, показался особый неотловленный алерт и проч), а далее по обстоятельствам. На WinAPI во многом конечно проще, но есть ведь библиотеки маппинга WinAPI на Java, хотя это не твой случай, раз у тебя .NET =)
vitorg, не вкурсе насколько популярен selenium на российском рынке?
Ну судя по тому, что он является основным средством автоматизации функционального тестирования Web-интерфейсов в таких компаниях как Яндекс, Мастерхост, Рамблер, Head Hunter, Бегун, а на последней конференции SQADays было аж 3 доклада про Selenium, то очень даже популярен :) Просто многие пока ещё не в курсе, что он существует, т.к. продукт сравнительно молодой и сидят на ужасно неподходящих для веба и дорогущих Rational Robot'ах, Silk Test'ах и прочем.
Кстати, в Гугле отдел тестирования также выбрал Selenium, см. их презентацию на GTAK.
#11
Отправлено 15 октября 2008 - 09:52
спс, за информацию, до этого знал только про гугл.Ну судя по тому, что он является основным средством автоматизации функционального тестирования Web-интерфейсов в таких компаниях как Яндекс, Мастерхост, Рамблер, Head Hunter, Бегун, а на последней конференции SQADays было аж 3 доклада про Selenium, то очень даже популярен :) Просто многие пока ещё не в курсе, что он существует, т.к. продукт сравнительно молодой и сидят на ужасно неподходящих для веба и дорогущих Rational Robot'ах, Silk Test'ах и прочем.
Кстати, в Гугле отдел тестирования также выбрал Selenium, см. их презентацию на GTAK.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных