1

WebDriver、特に HtmlUnitDriver と FirefoxWebDriver についてです。

HtmlUnitDriver と FirefoxWebDriver の両方に同じプロキシ設定を使用しましたが、FirefoxWebDriver のみが機能します。

HtmlUnitDriver で取得したのは、プロキシ サーバーからの「アクセスが拒否されました」でした。プロキシ設定を使用しなかった場合、空白のページが表示されました。ユーザー名またはパスワードを設定しなかった場合も同じエラーが発生したため、ユーザー名またはパスワードとは何の関係もないと思います。

以下は私のコードです。ありがとう!

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

1 に答える 1

1

使用:

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

プロキシの詳細が基になるHttpClient(In HttpWebConnection.getResponse())メソッドに送信されていることがわかります。

プロキシ設定を提供できますか(公開されている場合)、またはHttpClientを直接使用して、プロキシと互換性がないかどうかを確認できますか?

PS:他の人も同様に助けに興味があるかもしれないので、HtmlUnitユーザーリストを使用する方が良いです。

于 2009-10-17T10:37:25.297 に答える