Есть ли способ указать имя пользователя и пароль для базового диалога auth в IE с использованием Selenium Webdriver? Передача учетных данных в URL-адресе не является для нас вариантом.Selenium Webdriver и Basic Auth в IE
ответ
У меня есть решение для этой эпической проблемы
Используйте awt !!
Открыть URL и использовать класс Java Robot или класс SmartRobot приведены ниже:
class SmartRobot extends Robot {
public SmartRobot() throws AWTException
{
super();
}
/*public void pressEnter()
{
keyPress(KeyEvent.VK_ENTER);
delay(50);
keyRelease(KeyEvent.VK_ENTER);
} */
public void pasteClipboard()
{
keyPress(KeyEvent.VK_CONTROL);
keyPress(KeyEvent.VK_V);
delay(50);
keyRelease(KeyEvent.VK_V);
keyRelease(KeyEvent.VK_CONTROL);
}
public void type(String text)
{
writeToClipboard(text);
pasteClipboard();
}
private void writeToClipboard(String s)
{
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = new StringSelection(s);
clipboard.setContents(transferable, null);
}
}
и использовать этот класс что-то вроде ....
try{
SmartRobot robot = new SmartRobot();
robot.type(username);
robot.keyPress(KeyEvent.VK_TAB);
robot.type(password);
robot.keyPress(KeyEvent.VK_ENTER);
}catch(Exception AWTException){
System.out.println("Exception " + AWTException.getMessage());
}
решение работает как шарм , без каких-либо сторонних инструментов, таких как AutoIt или Sikuli.
Это похоже на мой метод обработки базового auth в IE. Тем не менее, я обнаружил, что IE <9 Я могу передать url с пользователем: pass @ используя http-аутентификацию. С IE> = 9 мне нужно было перейти в обычный url, а затем использовать driver.switchTo(). Alert(), чтобы начать использовать Robot для ввода учетных данных пользователя/пароля. – Lukus
Этот метод не работает в Firefox/Chrome/Safari. У вас есть идея по этому поводу? Эти методы точно имитируют поведение человека. и мне нужно сделать то же самое со всеми браузерами, отправка параметров в url показывает страницу с ошибкой моего SSO (shibboleth) из-за отсутствия файлов cookie. Только это решение с IE работает как шарм! – Tejas
Вы пробовали использовать старый добрый старый пароль и пароль в URL-адресе?
driver.get("http://username:[email protected]");
Это действительно работает для меня в Firefox и Chrome. Я не тестировал IE, потому что я нахожусь на linux
Это не будет работать в IE, если вы не измените настройки реестра (у которого есть свои оговорки): http://stackoverflow.com/a/4105642/4985326 и http://stackoverflow.com/a/23519791/4985326 – Anon
Фактически, если вы находитесь в Windows и используете, кроме Java, для написания автоматизации, AutoItX3 - очень хороший вариант.
Вы должны быть зарегистрированы AutoItX3.dll для Windows:
> regsvr32 AutoItX3.dll
И создать его экземпляр где-то в коде:
require 'win32ole'
@ai = ::WIN32OLE.new('AutoItX3.Control')
Вот Рубин/Watir-WebDriver образец основной метод аутентификации:
def basic_auth(browser, user, pswd, url)
user_name, pass_word, login_button, login_title = get_basic_auth_control_indexes
a = Thread.new {
browser.goto(url)
}
if @ai.WinWait(login_title, "", 90) > 0
@ai.WinActivate(login_title)
@ai.ControlSend(login_title, '', "[CLASS:Edit; INSTANCE:#{user_name}]", '!u')
@ai.ControlSetText(login_title, '', "[CLASS:Edit; INSTANCE:#{user_name}]", @user)
@ai.ControlSetText(login_title, '', "[CLASS:Edit; INSTANCE:#{pass_word}]", @pass.gsub(/!/, '{!}'))
@ai.ControlClick(login_title, "", "[CLASS:Button; INSTANCE:#{login_button}]")
else
puts("Basic Auth Login window '#{login_title}' did not appear.")
end
a.join
end
Способы обработки: Этот в настоящее время o олько знает Chrome для Win XP и Win 7
def get_basic_auth_control_indexes
case $win_major
when '5' # XP
['2','3','1','Connect to']
when '6' # Win 7
['1','2','2','Windows Security']
end
end
Конечно, это Windows, конкретны:
def get_windows_version
ver = `ver`.gsub("\n", '')
mtch = ver.match(/(.*)\s\[Version\s*(\d+)\.(\d+)\.(\d+)\]/)
$win_name = mtch[1]
$win_major = mtch[2]
$win_minor = mtch[3]
$win_build = mtch[4]
$win_version = "#{$win_major}.#{$win_minor}.#{$win_build}"
end
- 1. HTTP Basic Auth и прокси для selenium-webdriver (привязки ruby)
- 2. Selenium IE WebDriver: NoSuchElementException
- 3. Python 3.5 Selenium Webdriver IE
- 4. Ошибка Selenium WebDriver для IE
- 5. Selenium IE 32bit WebDriver сбой
- 6. Selenium Webdriver Tutorials basic to advance
- 7. cakephp 3 selenium facebook webdriver auth
- 8. Selenium webdriver внезапно перестает работать в IE
- 9. C# - Сессия Истекает в selenium IE webdriver
- 10. Невозможно запустить браузер IE в selenium webdriver
- 11. Проблема с IE в selenium webdriver?
- 12. Как закрыть аутентификацию в Selenium IE webdriver?
- 13. Basic Auth и JWT
- 14. Basic Auth и HttpContext
- 15. VisualSVN и Basic auth
- 16. Selenium WebDriver и InternetExplorer
- 17. Как обрабатывать заголовки HTTP Basic Auth в Selenium Webdriver с помощью Java?
- 18. Selenium WebDriver и сервер Selenium
- 19. Selenium WebDriver Поддержка режима метро IE
- 20. Selenium Webdriver IE не удалось найти элемент
- 21. Selenium webdriver: IE 11 element.Click() не работает
- 22. HTTP basic auth, digest auth и Oauth?
- 23. selenium ie webdriver без моего профиля
- 24. Selenium Webdriver отключается на IE 11
- 25. Selenium IE Webdriver Hovering Over Element мерцает
- 26. Selenium WebDriver - IE 8 - Windows 2008 Server
- 27. IE 11 с Selenium WebDriver: org.openqa.selenium.NoSuchWindowException
- 28. mod_rewrite и HTTP Basic Auth
- 29. AngularJS и Basic HTTP Auth
- 30. Docker Registry и Basic Auth
ли кто-нибудь найти решение для этого? – Tejas
@ Napster нет, я использую кодированный интерфейс теперь из-за этого ограничения – SB2055
кодированный пользовательский интерфейс? означает, что вы изменили поведение сервера, чтобы не использовать базовую аутентификацию или что-то еще? извините, я не получил его – Tejas