使用 Selenium WebDriver 处理 Windows NTLM 身份验证
Handling Windows NTLM authentication with Selenium WebDriver
我正在尝试针对使用 NTLM 身份验证协议的 Web 应用程序 运行 selenium Web 驱动程序 (Firefox) 测试用例。
我使用 DesiredCapabilities 将 "network.automatic-ntlm-auth.trusted-uris" 值更新为“http://localhost:8080”以避免显示身份验证 window。
"network.automatic-ntlm-auth.trusted-uris" 值已更新,但在浏览器中它仍然是空的。
问题:
- 如何设置 "network.automatic-ntlm-auth.trusted-uris" 值?
- 解决此问题的最佳方法是什么?
请查看下面的屏幕截图和代码了解更多详情。
提前致谢。
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);
}
问题已解决。我必须使用 FirefoxProfile 来覆盖所有浏览器配置值。
请查看this了解更多详情。
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);
}
我正在尝试针对使用 NTLM 身份验证协议的 Web 应用程序 运行 selenium Web 驱动程序 (Firefox) 测试用例。
我使用 DesiredCapabilities 将 "network.automatic-ntlm-auth.trusted-uris" 值更新为“http://localhost:8080”以避免显示身份验证 window。
"network.automatic-ntlm-auth.trusted-uris" 值已更新,但在浏览器中它仍然是空的。
问题:
- 如何设置 "network.automatic-ntlm-auth.trusted-uris" 值?
- 解决此问题的最佳方法是什么?
请查看下面的屏幕截图和代码了解更多详情。
提前致谢。
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);
}
问题已解决。我必须使用 FirefoxProfile 来覆盖所有浏览器配置值。
请查看this了解更多详情。
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);
}