2009-10-16 4 views
1

Il est sur le point WebDriver, en particulier HtmlUnitDriver et FirefoxWebDriverHtmlUnit d'émission proxy

je les mêmes paramètres de proxy pour les HtmlUnitDriver et FirefoxWebDriver, mais seulement FirefoxWebDriver fonctionne.

Ce que j'ai obtenu avec HtmlUnitDriver était "Accès refusé" du serveur proxy. J'ai une page blanche lorsque je n'ai pas utilisé les paramètres de proxy. Je ne pense pas que cela ait quelque chose à voir avec le nom d'utilisateur ou le mot de passe, car j'ai eu la même erreur si je n'avais pas défini le nom d'utilisateur ou le mot de passe.

Ce qui suit est mon code, n'importe quelle idée serait appréciée. Merci!

public WebDriver createHtmlUnitWebDriver() { 
    HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() { 
     @Override 
     protected WebClient modifyWebClient(WebClient client) { 
      client.setProxyConfig(new ProxyConfig(PROXY_HOST, PROXY_PORT)); 

      DefaultCredentialsProvider credentialsProvider = new DefaultCredentialsProvider(); 
      credentialsProvider.addCredentials("username", "password"); 
      credentialsProvider.addProxyCredentials("username", "password", PROXY_HOST, PROXY_PORT); 
      client.setCredentialsProvider(credentialsProvider); 

      return client; 
     } 
    }; 

    htmlUnitDriver.setProxy(PROXY_HOST, PROXY_PORT); 
    htmlUnitDriver.setJavascriptEnabled(true); 

    return htmlUnitDriver; 
} 

public WebDriver createFirefoxWebDriver() { 
    FirefoxProfile firefoxProfile = new FirefoxProfile(); 

    firefoxProfile.setPreference("network.proxy.type", 1); 
    firefoxProfile.setPreference("network.proxy.http", PROXY_HOST); 
    firefoxProfile.setPreference("network.proxy.http_port", PROXY_PORT); 
    firefoxProfile.setPreference("network.proxy.ssl", PROXY_HOST); 
    firefoxProfile.setPreference("network.proxy.ssl_port", PROXY_PORT); 
    firefoxProfile.setPreference("network.proxy.no_proxies_on", ""); 

    return new FirefoxDriver(firefoxProfile); 
} 

Répondre

1

utilisant: méthode

HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver(); 
htmlUnitDriver.get("http://www.google.com"); 

je peux voir que les détails de procuration sont envoyés au HttpClient sous-jacente (En HttpWebConnection.getResponse()).

Pouvez-vous fournir vos paramètres proxy (si elle est disponible au public), ou vous pouvez essayer d'utiliser directement HttpClient, pour voir si elle n'est pas compatible avec votre proxy ou non?

P.S .: il est préférable d'utiliser la liste d'utilisateurs HtmlUnit, comme d'autres peuvent être intéressés à aider aussi.

+0

pourriez-vous s'il vous plaît regarder la question à http://stackoverflow.com/questions/2131049/problem-in-htmlunit-api-for-java-headless-browser –