Обработка аутентификации браузера с использованием Selenium

Кто-нибудь знает об обработке аутентификации браузера с помощью Selenium или любого другого инструмента во время автоматизации?

 Louis07 мая 2015 г., 12:20
Относительные даты вопросов - один из факторов, но не самый важный. Относительное качество двух вопросов и связанных с ними ответов гораздо важнее. Принятый ответ здесь начинается с «это устарело, посмотрите другой ответ». Вы можете выполнить поиск в Meta SO для «[duplicate-questions] newer», чтобы прочитать различные посты, посвященные этой теме. Видетьэт вопрос в частности.

Ответы на вопрос(7)

что я читал в Интернете, не помогло мне. Поэтому, прежде чем сделать запрос, вот так:

driver.get(url);

Вы должны запустить новую тему, как это:

RunScript runScript = new RunScript();
runScript.start();

В этом случае вы можете ввести логин и пароль в другой ветке следующего класса

public class RunScript extends Thread {

@Override
public void run() {
    try {
        File file = new File("D:\\jacob-1.18-x86.dll");
        System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
        AutoItX autoIt = new AutoItX();
        Thread.sleep(2000);
        autoIt.winActivate("yourWindowName", "");
        autoIt.winWaitActive("yourWindowName");
        if (autoIt.winExists("yourWindowName")) {
            autoIt.send("username{TAB}", false);
            autoIt.send("password{Enter}", false);
            }
        }
    } catch (InterruptedException ex) {
        //
    }
}
}

емы

WinWaitActive("[CLASS:Chrome_WidgetWin_1]", "", time)
Send("user")
Send("{TAB}")
Send("pass")
Send("{ENTER}")
Решение Вопроса
EDIT в 2015 году:

кацию! Видеть Как обрабатывать всплывающее окно аутентификации с помощью Selenium WebDriver с использованием Java

Оригинальный ответ:

Селен не очень хорошо справляется с этим.

Вы можете попробовать использоватьhttp://username:[email protected]/yourpage

вместо простоhttp://example.com/yourpage

Однако, насколько мне известно, Firefox по-прежнему будет отображать диалоговое окно браузера с запросом подтверждения.

Можешь попробовать Robot если вы используете Java (или любой другой подобный инструмент, например AutoIt).

Ты можешь использоватьdriver.manage().addCookie() если вы используете WebDriver.

Или обычай FirefoxProfile который уже прошел проверку подлинности один раз.

 Petr Janeček15 мая 2012 г., 13:59
Из любопытства, какой путь ты выбрал в конце концов, каково было твоё решение?
 Harshavardhan Konakanchi18 мая 2012 г., 13:06
username: [email protected]/yourpage не работает для IE
 Harshavardhan Konakanchi15 мая 2012 г., 17:45
Вы можете попробовать использоватьusername: пароль @ example.com / yourpage вместо просто Example.com / yourpage
 Justin30 сент. 2013 г., 16:43
Эта публикация содержит некоторую очень важную информацию, чтобы обойти проверку подлинности браузера NTLM с помощью Selenium: / Stackoverflow.com вопросы / 3021602 / ...
 Petr Janeček16 янв. 2015 г., 17:30
@ Timur Извините, этот ответ устарел, в настоящее время WebDriver поддерживает аутентификацию! Видеть / Stackoverflow.com вопросы / 24304752 / ...

на уровне браузера в сети моей компании, чтобы попасть в приложение. Решением было использование компонента «unsername: password @» в URL, НО, чтобы добавить косую черту в конце URL входа в систему.

Таким образом, общий URL-адрес входа выглядит следующим образом (обратите внимание на '/' послетвоя страниц):

http: // имя пользователя: пароль @ example.com / yourpage /

Работает с Watir, Capybara и Selenium Webdriver.

ver, используя Firefox

WebDriver driver = new FirefoxDriver();
    driver.get("http://localhost:9990");

    WebElement myDynamicElement = driver.findElement(By.id("app"));

    Alert alert = driver.switchTo().alert();


    try {
        Robot robot = new Robot();
        alert.sendKeys("username");

        robot.keyPress(KeyEvent.VK_TAB);//go to password feild

        robot.keyPress(KeyEvent.VK_P);
        robot.keyPress(KeyEvent.VK_A);
        robot.keyPress(KeyEvent.VK_S);
        robot.keyPress(KeyEvent.VK_S);

        robot.keyPress(KeyEvent.VK_ENTER);


        } catch (AWTException e) {
        e.printStackTrace();
        }

    }

Использование Selenium с роботом
http: //docs.oracle.com/javase/1.5.0/docs/api/java/awt/Robot.htm

sikuli и т. Д. Просто тратят время, когда вы запускаете его в своем решении CI, используя несколько типов браузеров / OS / Version / Resolutions и т. Д.

Способ сделать это правильно - определить действительный метод аутентификации и выполнить вход в систему, используя, например, протокол Rest.

Я использовал его, чтобы получить cookie-файл JSESIONID и вставить его в драйвер селена. Подсказка: сначала перейдите к несуществующему URL доминика, затем установите cookie, затем перейдите к нужному URL - вы вошли в систему.

use: отключите аутентификацию клиента, чтобы получить идентификатор JSESSION

и с этой информацией:

browser().navigate(foo.getUrl()+"non-exiting-url");

//the information got from the rest client login:
Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure, isHttpOnly);

try {
    driver.manage().addCookie(cookie);
} catch (Exception e) {
    System.out.println(e.toString());
}

browser().navigate(foo.getUrl());
 Chandra Shekhar30 сент. 2016 г., 15:09
Можете ли вы описать, что такое «не существующий URL»?

http://username:[email protected]/yourpage
 bastienG05 февр. 2019 г., 13:47
согласен, но поскольку контекст firefox был явным, мысль тоже стоит переписать ...
 barbsan31 янв. 2019 г., 12:32
Принятый ответ уже содержит этот метод

Ваш ответ на вопрос