Firefox auth всплывающее окно с ошибкой: приглашение пользователя типа promptUserAndPass не поддерживается - PullRequest
3 голосов
/ 11 февраля 2020

Моя функция аутентификации отлично работает в chrome, но Firefox обрабатывает ее иначе. Я не могу войти в систему аутентификации.

Моя Firefox версия: 72.02

Я обнаружил, что это известная ошибка, но они 1 год пост, если у кого-то есть решение, пожалуйста, поделитесь

https://bugzilla.mozilla.org/show_bug.cgi?id=1556026

https://bugzilla.mozilla.org/show_bug.cgi?id=1556307

Обычный код не будет работать, как показано ниже, так как мне нужно добавить токен в URL-адрес выполнения, как показано в chrome, но не в Firefox

driver.get("http://your-username:your-password@example.com");

Так что мне нужно чтобы сделать некоторые sendKeys в этом случае, который не работает для меня

Я получаю ошибку как:

Исключение в потоке "main" org.openqa.selenium.UnsupportedCommandException: приглашение пользователя Тип promptUserAndPass не поддерживается Информация о сборке: версия: '3.141.59', версия: 'e82be7d358', время: '2018-11-14T08: 17: 03' Информация о системе: хост: '', ip: '', os. имя: 'Windows 10', os.arch: 'amd64', os.version: '10 .0 ', java .version:' 1.8.0_66 'Информация о драйвере: org.openqa.selenium. firefox .FirefoxDr iver

Код, который я пытаюсь:

public static void main(String[] args) throws InterruptedException, AWTException {

       /* BrowserMobProxy proxy = new BrowserMobProxyServer();
        proxy.start(0);
        Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);*/

        // put our custom header to each request
/*       proxy.addRequestFilter((request, contents, messageInfo)->{
            request.headers().add("my-test-header", "my-test-value");
            System.out.println(request.headers().entries().toString());
            return null;
        });*/

        // Setting up Proxy for chrome
      //  ChromeOptions opts = new ChromeOptions();




        WebDriver driver = null;
        String url = "https://qa.xyz-domain/new-request/";
        String UserName = "xyzuser";
        String Password = "xyz@202";

        System.setProperty("webdriver.gecko.driver",
                "D:\\Demoproject\\src\\main\\resources\\drivers\\geckodriver.exe");
        FirefoxOptions options = new FirefoxOptions();
         options.setCapability("network.http.phishy-userpass-length", 255);
         options.setCapability("network.automatic-ntlm-auth.trusted-uris","testcloud");
        // options.setp
    //   options.setCapability(CapabilityType.);


         String val=UserName+":"+Password;

         String encodedCreadentials = "Basic " + (Base64.getEncoder().encodeToString(val.getBytes()));

         options.setCapability("Authorization",encodedCreadentials);

        // String proxyOption = "--proxy-server=" + seleniumProxy.getHttpProxy();
       //  options.addArguments(proxyOption);
        // options.addArguments(arguments)
        driver = new FirefoxDriver(options);

        driver.get(url);
        Thread.sleep(5000);
        driver.findElement(By.name("loginfmt")).sendKeys("user.name@xyz.com");
        driver.findElement(By.name("loginfmt")).sendKeys(Keys.ENTER);
        Thread.sleep(15000);
        driver.switchTo().alert().sendKeys(UserName);
        /*BrowserMobProxy browserMobProxy = new BrowserMobProxyServer();


        browserMobProxy.addHeader("Authorization", encodedCreadentials);
        browserMobProxy.start();*/


        //ProxyServer bmp = new ProxyServer(4444);
    /*  Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_ENTER);
        driver.switchTo().alert().sendKeys(UserName);*/


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

        System.out.println(alert.getText());

        if (alert.getText().contains("jjjj")) {*/
    //      alert.sendKeys("UserName");
            //driver.switchTo().alert().dismiss();;
            //driver.switchTo().alert().sendKeys(UserName + Keys.TAB + Password);
            //alert.sendKeys(UserName + Keys.TAB + Password);

            /*String url2 = driver.getCurrentUrl().replaceAll("https://", "");
            System.out.println("url2 = " + url2);

            String url3 = "https://" + UserName + ":" + Password + "@" + url2 + "/";
            System.out.println("url3 = " + url3);
            driver.get(url3);

            //driver.switchTo().alert().sendKeys(UserName + Keys.TAB + Password);
            //driver.switchTo().alert().accept();

            String url2 = driver.getCurrentUrl().replaceAll("https://", "");
            System.out.println("url2 = " + url2);

            String url3 = "https://" + UserName + ":" + Password + "@" + url2 + "/";
            System.out.println("url3 = " + url3);
            driver.get(url3);*/

        /*} else {
            System.out.println("not appearing");
        }*/



    }

}

Я пытался использовать BrowserMobProxy, но я считаю, что он работает только с запросом http, я думаю, и для https har требуется, пусть я знаю, если есть проблема с моим пониманием. или мы можем использовать его в любом случае для https

см .:

enter image description here

...