Обработка аутентификации Windows NTLM с помощью Selenium WebDriver

Я пытаюсь запустить тестовые примеры селенового веб-драйвера (Firefox) для веб-приложения, использующего протокол аутентификации NTLM.

Я использовал DesiredCapabilities, чтобы обновить значение "network.automatic-ntlm-auth.trusted-uris" с помощью " http://localhost:8080/", чтобы избежать отображения окна аутентификации.

Значение "network.automatic-ntlm-auth.trusted-uris" обновлено, но в браузере оно все еще пусто.

Вопросы:

  1. Как я могу установить значение "network.automatic-ntlm-auth.trusted-uris"?
  2. Как лучше всего решить эту проблему?

Пожалуйста, проверьте скриншот и код ниже для более подробной информации.

Заранее спасибо.

SSO_Screenshot

public RemoteWebDriver getWebDriverObject(DesiredCapabilities capabilities) {
        String os = SystemUtils.IS_OS_WINDOWS ? "windows" : "linux";
        System.setProperty("webdriver.gecko.driver", "target/test-classes/selenium_standalone_binaries/" + os + "/marionette/64bit/geckodriver.exe");

        FirefoxOptions options = new FirefoxOptions();

        // check the "Network.automatic-ntlm-auth.trusted-uris value before update"
        System.out.println("Capability before update >>>>>" + capabilities.getCapability("Network.automatic-ntlm-auth.trusted-uris"));

        // update the "Network.automatic-ntlm-auth.trusted-uris value" after update
        capabilities.setCapability("Network.automatic-ntlm-auth.trusted-uris", "http://localhost:8080");

        // check the "Network.automatic-ntlm-auth.trusted-uris value after update"
        System.out.println("Capability after update >>>>>" + capabilities.getCapability("Network.automatic-ntlm-auth.trusted-uris"));

        options.merge(capabilities);
        options.setHeadless(HEADLESS);

        return new FirefoxDriver(options);
    }

1 ответ

Проблема решена. Я должен использовать FirefoxProfile, чтобы перезаписать все значения конфигурации браузера.

Пожалуйста, проверьте это для более подробной информации.

public RemoteWebDriver getWebDriverObject(DesiredCapabilities capabilities) {
        String os = SystemUtils.IS_OS_WINDOWS ? "windows" : "linux";
        System.setProperty("webdriver.gecko.driver", "target/test-classes/selenium_standalone_binaries/" + os + "/marionette/64bit/geckodriver.exe");

        FirefoxOptions options = new FirefoxOptions();
        options.merge(capabilities);
        options.setHeadless(HEADLESS);

        FirefoxProfile profile = new FirefoxProfile();
        profile.setPreference("network.automatic-ntlm-auth.trusted-uris", "http://localhost:8080");
        profile.setPreference("dom.disable_beforeunload", false);

        options.setProfile(profile);
        options.setLogLevel(FirefoxDriverLogLevel.DEBUG);
        return new FirefoxDriver(options);
    }
Другие вопросы по тегам