Как ввести пароль во всплывающем окне с помощью watir?

Я пишу несколько тестовых случаев watir:

browser.goto "http://egauge2592.egaug.es/"
browser.link(:href,"/settings.html").click
browser.text_field(:index,4).set("some text")
browser.button(:id,"save_button").click

затем открывается диалоговое окно «Требуется аутентификация», запрашивающее имя пользователя и пароль.

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

Я пробовал send_keys и JavaScript.

Я также пробовал Watir.autoit, но он говорит о неопределенном методе.

Я использую watir на машине Ubuntu с браузером FireFox.

Как заполнить поля имени пользователя и пароля этого диалогового окна? Я смог ввести имя пользователя с помощью browser.alert.set, но мог только установить, что имя пользователя не может получить доступ к полю пароля.


person Uday Swami    schedule 03.10.2012    source источник
comment
Можете выложить скриншот всплывающего окна?   -  person Željko Filipin    schedule 03.10.2012
comment
Это всплывающее окно браузера. Когда странице требуется дайджест-аутентификация, браузер автоматически запрашивает учетные данные. Всплывающее окно такое же.   -  person Aashish P    schedule 04.10.2012
comment
Я также пытался использовать метод browser.window(:title), но он не распознавал никаких методов watir(text_field). Также пытался использовать имя пользователя: пароль @ перед этим сайтом для аутентификации, но не сработало.   -  person Uday Swami    schedule 04.10.2012
comment
Пробовали ли вы предложение на Блог Алистера Скотта?   -  person Justin Ko    schedule 06.10.2012
comment
Да, я читал это, но мне нужно проверить мои случаи в безголовом браузере на сервере, на котором нет пользовательского интерфейса. Итак, как я могу использовать надстройки там ??   -  person Uday Swami    schedule 08.10.2012


Ответы (3)


Недавно я написал плагин Firefox для решения этой проблемы. Я не пробовал это с безголовым Firefox, но это может сработать... стоит попробовать. Подробнее см. ниже:

http://www.natontesting.com/2012/10/06/firefox-plugin-test-automation-password-manager/

Чтобы заставить его работать с watir, попробуйте следующее:

browser = Watir::Browser.new
#go to a page that won't bring up the authentication dialog...
browser.goto 'http://www.google.co.uk'

#prepare the script...
pass_man_update_script = <<-SCRIPT
var addCredentialsEvent = new CustomEvent("add_credentials_to_passman", {
  detail: {
    host: 'http://secure.example.com',
    username: 'bob',
    password: 'P45sword'
  }
});
window.dispatchEvent(addCredentialsEvent);
SCRIPT

#inject the script into the browser:
browser.execute_script pass_man_update_script

#go to the page that prompts the dialog box...
browser.goto "http://secure.example.com"
#you should now be past the dialog box!
person Nat Ritmeyer    schedule 16.10.2012
comment
Да, я пробовал ваше решение ранее, но я не мог написать соответствующий код для watir, и у меня нет опыта работы с селеном. - person Uday Swami; 17.10.2012
comment
Только что обновил вопрос с подробностями о том, как использовать плагин с watir. - person Nat Ritmeyer; 17.10.2012
comment
он не работает с этим кодом или без него, нужен другой код для загрузки плагина для watir - person Uday Swami; 17.10.2012
comment
Приведенный выше код предполагает, что плагины уже загружены... см. ответ на этот вопрос, как это сделать: stackoverflow.com/a /6564780/275673 - person Nat Ritmeyer; 17.10.2012
comment
это не работает, предупреждение для uname и paddword все еще появляется, и настройки не сохраняются, я смог установить поле uname с помощью browser.alert.set, но не смог получить доступ к полю пароля - person Uday Swami; 18.10.2012
comment
Диалоговое окно похоже на то, что показано на снимке экрана в этой статье?: natontesting.com/2012/10/06/ - person Nat Ritmeyer; 18.10.2012
comment
заголовок такой же, как и сообщение, в котором говорится, что имя пользователя и пароль запрашиваются egauge2592.egaug.es. На сайте написано: Администрация eGauge и то же самое это дайджест аутентификация - person Uday Swami; 19.10.2012

Вместо этого я использую watir-webdriver, и это (http://watirwebdriver.com/basic-browser-authentication/) работает для меня.

person bkone    schedule 24.10.2012
comment
нет, это не сработает, потому что я использую браузер в безголовом режиме и не знаю, как установить профиль в безголовом режиме - person Uday Swami; 26.10.2012
comment
Этот трюк должен работать в безголовом режиме, предполагая, что ваш сайт использует базовую HTTP-аутентификацию (и ваши описания звучат так). Вы действительно пробовали это? К профилю отношения не имеет. - person SporkInventor; 27.10.2012

Просто поместите свои основные учетные данные в URL-адрес:

browser.goto "http://user:[email protected]/"
person pguardiario    schedule 27.10.2012
comment
это дайджест-аутентификация, поэтому он не будет работать. Кстати, я тоже пробовал это, как упоминалось в комментарии выше. - person Uday Swami; 27.10.2012
comment
Он должен нормально работать с авторизацией дайджеста. Дважды проверьте имя пользователя/пароль. - person pguardiario; 28.10.2012
comment
@pguardiario Работает в случае дайджест-аутентификации. Но здесь, в нашем случае, проблема заключается в том, что сервису также требуется строка realm при одновременном кодировании имени пользователя и пароля. Любая идея, как предоставить его в самом URL? - person Aashish P; 29.10.2012
comment
Что происходит, так это то, что браузер получает запрос аутентификации, включая область и, возможно, одноразовый номер и т. д. Вам не нужно об этом беспокоиться. Отправляя учетные данные в URL-адресе, браузер автоматически отправит соответствующие учетные данные, включая хешированный пароль, который включает область, когда это уместно (в случае дайджест-аутентификации). - person pguardiario; 29.10.2012
comment
Нет, ответ авторизации отправляет область, а браузер автоматически отправляет ее обратно. - person pguardiario; 29.10.2012
comment
@uday это, наверное, что-то глупое. Если вы опубликуете учетные данные, вы получите помощь, в противном случае вам нужно решить эту проблему самостоятельно. - person pguardiario; 30.10.2012