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

Фотография

Как закрыть мессадж бокс, появляющийся на onload?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 popo_kid

popo_kid

    Активный участник

  • Members
  • PipPip
  • 79 сообщений

Отправлено 13 октября 2008 - 10:14

Я так понимаю, что средствами selenium'a его закрыть не получится =( Кто что использует для таких случаев?
Пока думаю заюзать winapi, но немного напрягает трудоемкость этого решения (под каждый браузер свой код придется писать) + надо будет еще доп приложение ставить на стороне сервера selenium. В общем буду рад светлым идеям =)
  • 0

#2 NLord

NLord

    Активный участник

  • Members
  • PipPip
  • 108 сообщений

Отправлено 13 октября 2008 - 10:25

Я так понимаю, что средствами selenium'a его закрыть не получится =( Кто что использует для таких случаев?
Пока думаю заюзать winapi, но немного напрягает трудоемкость этого решения (под каждый браузер свой код придется писать) + надо будет еще доп приложение ставить на стороне сервера selenium. В общем буду рад светлым идеям =)


"мессадж бокс" чей, браузера или ОС? И о чём он?
В Селениуме есть answerOnNextPrompt(), chooseCancelOnNextConfirmation() и т.д., возможно будет полезным.
  • 0
"Меня терзают смутные сомненья..." что это работает.

#3 popo_kid

popo_kid

    Активный участник

  • Members
  • PipPip
  • 79 сообщений

Отправлено 13 октября 2008 - 10:48

"мессадж бокс" чей, браузера или ОС? И о чём он?
В Селениуме есть answerOnNextPrompt(), chooseCancelOnNextConfirmation() и т.д., возможно будет полезным.

угу про процедуры знаю, только на их использование есть такое вот ограничение

Selenium does NOT support JavaScript alerts that are generated in a page's OnLoad() event handler.

как раз мой случай
  • 0

#4 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 13 октября 2008 - 18:29

"мессадж бокс" чей, браузера или ОС? И о чём он?
В Селениуме есть answerOnNextPrompt(), chooseCancelOnNextConfirmation() и т.д., возможно будет полезным.

угу про процедуры знаю, только на их использование есть такое вот ограничение

Selenium does NOT support JavaScript alerts that are generated in a page's OnLoad() event handler.

как раз мой случай

В Селениуме уже ооочень давно есть нативные методы (*Native), используй их и будет тебе счастье с любыми неJavaScript-окошками. К примеру можно без проблем управлять окном выбора файла. Кстати, в Селениуме замаплены не все возможности нативных методов, что странно, но это легко доделать.
  • 0

#5 popo_kid

popo_kid

    Активный участник

  • Members
  • PipPip
  • 79 сообщений

Отправлено 14 октября 2008 - 08:05

В Селениуме уже ооочень давно есть нативные методы (*Native), используй их и будет тебе счастье с любыми неJavaScript-окошками. К примеру можно без проблем управлять окном выбора файла. Кстати, в Селениуме замаплены не все возможности нативных методов, что странно, но это легко доделать.

можно ссылочку на описание (или примеры использования) этих *Native методов, стыдно признаться, но первый раз слышу
  • 0

#6 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 14 октября 2008 - 10:05

В Селениуме уже ооочень давно есть нативные методы (*Native), используй их и будет тебе счастье с любыми неJavaScript-окошками. К примеру можно без проблем управлять окном выбора файла. Кстати, в Селениуме замаплены не все возможности нативных методов, что странно, но это легко доделать.

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

Эээмм... в JavaDoc по драйверу всё написано, вот:

/** 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.
  • 0

#7 popo_kid

popo_kid

    Активный участник

  • Members
  • PipPip
  • 79 сообщений

Отправлено 14 октября 2008 - 10:15

Я добавил для себя ещё несколько команд из java.awt.Robot, типа mouseWhellNative.

спасибо за направление, пойду гуглить про java.awt.Robot, и искать аналог для .net, а то с джавой работал довольно поверхностно и про этот пакет ничего не знаю =)
  • 0

#8 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 14 октября 2008 - 11:14

Я добавил для себя ещё несколько команд из java.awt.Robot, типа mouseWhellNative.

спасибо за направление, пойду гуглить про java.awt.Robot, и искать аналог для .net, а то с джавой работал довольно поверхностно и про этот пакет ничего не знаю =)

Аналог для .NET не поможет, да и не нужен он. Твои тесты на .NET через драйвер фактически дёргают SeleniumRC по HTTP, а уже он, написанный на Java, использует java.awt.Robot.
Если ты хочешь добавить маппинги других возможностей, то тебе надо сделать это именно в SeleniumRC, а не в своих тестах, потом добавить поддержку твоей команды в .NET драйвере и использовать. В этом-то и есть прелесть архитектуры SeleniumRC :)
  • 0

#9 popo_kid

popo_kid

    Активный участник

  • Members
  • PipPip
  • 79 сообщений

Отправлено 15 октября 2008 - 08:00

Аналог для .NET не поможет, да и не нужен он. Твои тесты на .NET через драйвер фактически дёргают SeleniumRC по HTTP, а уже он, написанный на Java, использует java.awt.Robot.
Если ты хочешь добавить маппинги других возможностей, то тебе надо сделать это именно в SeleniumRC, а не в своих тестах, потом добавить поддержку твоей команды в .NET драйвере и использовать. В этом-то и есть прелесть архитектуры SeleniumRC :)

1) мне как бы проще написать еще дополнительный сервер на .net и вынести в него дополнительную логику =) выигрыш для меня будет состоять в том, что не надо возиться с java + при замене selenium rc на новую версию не придется делать дополнительных телодвижений, т.к. selenium отдельно, моя логика отдельно.

2) *native действительно полезные методы, но они не помогут решить мне следующую задачу.
есть куча тестов, которые в сумме выполняются часов 8. Тесты разбиты на независимые куски, между ними автоматом рестор базы, передергивание сайта и т.д. Сейчас если вдруг мы наткнулись на багу в апликейшине, то у нас возможно появление этого самого мессаджа в онлоад. Который останавливает выполнение скриптов, в силу того что джава скрипт от selenium работает в один поток, ну я так это для себя представляю.
Соответственно нужен некий функционал, который будет проверять, а нет ли у нас этого самого злополучного месаджбокса, и если он появился, то закрывать его. Текущий тест в еррор и поехали дальше. Для этого видимо, все же win api буду юзать.
Решение, путем разнесения тестов по разным тестовым инстансам пока не рассматривается.

vitorg, не вкурсе насколько популярен selenium на российском рынке?
  • 0

#10 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 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.
  • 0

#11 popo_kid

popo_kid

    Активный участник

  • Members
  • PipPip
  • 79 сообщений

Отправлено 15 октября 2008 - 09:52

Ну судя по тому, что он является основным средством автоматизации функционального тестирования Web-интерфейсов в таких компаниях как Яндекс, Мастерхост, Рамблер, Head Hunter, Бегун, а на последней конференции SQADays было аж 3 доклада про Selenium, то очень даже популярен :) Просто многие пока ещё не в курсе, что он существует, т.к. продукт сравнительно молодой и сидят на ужасно неподходящих для веба и дорогущих Rational Robot'ах, Silk Test'ах и прочем.
Кстати, в Гугле отдел тестирования также выбрал Selenium, см. их презентацию на GTAK.

спс, за информацию, до этого знал только про гугл.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных