C# Selenium RemoteWebDriver中的NTLM身份验证

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中

我试图在C#测试中使用Selenium HtmlUnit驱动程序。据我所知,在C#中使用HtmlUnit驱动程序的唯一方法是通过Selenium服务器和RemoteWebDriver:

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测试时的正常方式,因为现有代码提供了向弹出窗口提供凭据的方法。