C# Selenium RemoteWebDriver中的NTLM身份验证
我试图在C#测试中使用Selenium HtmlUnit驱动程序。据我所知,在C#中使用HtmlUnit驱动程序的唯一方法是通过Selenium服务器和RemoteWebDriver:C# Selenium RemoteWebDriver中的NTLM身份验证,c#,selenium,selenium-webdriver,ntlm,selenium-server,C#,Selenium,Selenium Webdriver,Ntlm,Selenium Server,我试图在C#测试中使用Selenium HtmlUnit驱动程序。据我所知,在C#中使用HtmlUnit驱动程序的唯一方法是通过Selenium服务器和RemoteWebDriver: var driver = new OpenQA.Selenium.Remote.RemoteWebDriver( OpenQA.Selenium.Remote.DesiredCapabilities.HtmlUnitWithJavaScript()); 但是,我还需要使用NTLM身份验证。使用Java中
var driver = new OpenQA.Selenium.Remote.RemoteWebDriver(
OpenQA.Selenium.Remote.DesiredCapabilities.HtmlUnitWithJavaScript());
但是,我还需要使用NTLM身份验证。使用Java中的非远程驱动程序,显然可以如下配置:
WebDriver driver = new HtmlUnitDriver() {
protected WebClient modifyWebClient(WebClient client) {
// Does nothing here to be overridden.
DefaultCredentialsProvider creds = new DefaultCredentialsProvider();
creds.addNTLMCredentials("userName", "password", null, -1, "myComputerName", "myDomain");
client.setCredentialsProvider(creds);
return client;
}
}
(来源:)
但这显然不能解决我的问题,因为我使用的是C#。我该怎么做?(我可以成功地使用Chrome,但我想使用HtmlUnit来提高速度)
谢谢 要传递凭据,您需要重载
HtmlUnitDriver
的modifyWebClient
,如讨论链接1所示
对于.NET开发人员来说,使用HtmlUnitDriver的唯一方法是通过RemoteWebDriver
,根据讨论2,开发人员选择不公开所有HtmlUnit
驱动程序类:
我不愿意在.NET中接受更多的依赖项
绑定。。。如果您执意使用HtmlUnit作为首选的无头浏览器,则始终可以通过RemoteWebDriver使用它
因此,您不能对RemoteWebDriver使用NTLM或任何其他凭据方法
如果您愿意做并维护这项工作,您可以转换所有HtmlUnit代码,如@JasonPlutext的answer3的第二个链接所述
您使用的是哪个版本?您是使用Nuget安装它的,还是只是下载zip并引用DLL?页面是否提示输入凭据?您是否考虑过简单地转换HtmlUnitDriver?我使用的是nuget的SeleniumWebDriver,所以我猜它是v2.47.0。当然,页面不会提示输入凭据,因为htmlunit没有UI(这是NTLM)。我已经考虑过将java代码转换为.NET,但我认为这不是一个好的解决方案,因为这将更难遵循Selenium更新,它将添加许多依赖项,而且这不是在浏览器中对页面弹出进行Selenium测试时的正常方式,因为现有代码提供了向弹出窗口提供凭据的方法。