7

我正在尝试在 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; 
    }  
}

(来源:https ://groups.google.com/forum/#!topic/webdriver/ktIWIs5m0mQ )

但这显然不能解决我的问题,因为我使用的是 C#。我怎样才能做到这一点 ?(我可以成功使用 Chrome,但我想使用 HtmlUnit 来提高速度)。

谢谢 !

4

1 回答 1

1

为了传递凭据,您需要重载 的modifyWebClientHtmlUnitDriver正如您在讨论链接1中看到的那样。

对于 .NET 开发人员来说,使用 HtmlUnitDriver 的唯一方法是通过.NET 2RemoteWebDriverHtmlUnit 包装器,开发人员选择不公开所有驱动程序类:HtmlUnit

我不愿意在 .NET 绑定中使用更多依赖项...如果您一心想使用 HtmlUnit 作为您选择的无头浏览器,您始终可以通过 RemoteWebDriver 使用它

因此,您不能将 NTLM 或任何其他凭据方法与 RemoteWebDriver 一起使用。

如果您愿意做并维护这项工作,您可以转换所有 HtmlUnit 代码,如@JasonPlutext 答案3的第二个链接中所述。

  1. 原始样本似乎来自selenium FAQ
  2. 链接到.NET 是否有 HtmlUnitDriver?在这里。
于 2015-09-09T18:50:23.993 回答