1

我正在尝试针对使用 NTLM 身份验证协议的 Web 应用程序运行 selenium Web 驱动程序(Firefox)测试用例。

我使用 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);
    }
4

1 回答 1

0

问题已经解决了。我必须使用 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);
    }
于 2019-02-19T13:29:19.487 回答