2015-09-03 24 views
6

Sto tentando di utilizzare il driver Selenium HtmlUnit nei test C#. Per quanto ne so, l'unico modo per utilizzare il driver HtmlUnit in C# è attraverso il server Selenio e la RemoteWebDriver:Autenticazione NTLM in Selenium RemoteWebDriver

var driver = new OpenQA.Selenium.Remote.RemoteWebDriver(
    OpenQA.Selenium.Remote.DesiredCapabilities.HtmlUnitWithJavaScript()); 

Tuttavia, ho anche bisogno di utilizzare l'autenticazione NTLM. Utilizzo del driver non remota in Java, apparentemente può essere configurato in questo modo:

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; 
    } 
} 

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

Ma questo, ovviamente, non risolve il problema, dato che sto usando C#. Come lo posso fare ? (Posso usare Chrome con successo, ma mi piacerebbe usare HtmlUnit per la velocità).

Grazie!

+0

Quale versione stai utilizzando? Lo hai installato con Nuget o semplicemente scaricato lo zip e facendo riferimento alle DLL? –

+0

La pagina richiede le credenziali? –

+0

Hai considerato semplicemente la conversione di HtmlUnitDriver? http://blog.stevensanderson.com/2010/03/30/using-htmlunit-on-net-for-headless-browser-automation/ –

risposta

1

Per passare le credenziali necessarie per sovraccaricare il modifyWebClient del HtmlUnitDriver, come avete visto nel link discussione .

Per lo sviluppatore .NET l'unico modo per utilizzare il HtmlUnitDriver è via la RemoteWebDriver, e sulla base della discussione HtmlUnit wrapper for .NET gli sviluppatori hanno scelto di non esporre tutte le classi HtmlUnit driver:

I 'm restio a prendere più dipendenze in .NET binding ... Se sei morto-imposta sull'uso HtmlUnit come browser senza testa di scelta, è sempre possibile utilizzare tramite il RemoteWebDriver

Pertanto non è possibile utilizzare NTLM o qualsiasi altro metodo di credenziali con RemoteWebDriver.

Se si desidera eseguire e mantenere il lavoro, è possibile convertire tutto il codice HtmlUnit come descritto nel secondo collegamento della risposta di @ JasonPlutext .

  1. Il campione originale sembra essere dello selenium FAQ.
  2. Collegato a da Is there an HtmlUnitDriver for .NET? qui su SO.