9

selenium2 chrome ドライバで基本認証を無効にする方法は? プロジェクトで、クロムの「認証が必要」ポップアップが表示され、webdriver がナビゲーションを続行するのをブロックしているという問題に直面しています。添付のスクリーンショットも同じです。 ここに画像の説明を入力 次のコードを使用して、chrome ドライバーをインスタンス化しています。

private WebDriver driver;
@Override
protected void setUp() throws Exception {
    super.setUp();
    System.setProperty("webdriver.chrome.driver", "C:/Selenium/chromedriver.exe");
    driver = new ChromeDriver();
}
@Override
protected void tearDown() throws Exception {
    // TODO Auto-generated method stub
    super.tearDown();
}

助けてください -

ありがとう、

4

5 に答える 5

7

私は1時間以上同じ問題に苦労してきましたが、最終的に@kenorbの解決策が私を助けてくれました. 手短に言えば、認証を行うブラウザー拡張機能を追加する必要があります (Selenium 自体はそれを行うことができないためです!)。

ChromePythonでの動作は次のとおりです。

  1. 次の2 つのファイルを含むzip ファイルproxy.zipを作成します。

background.js

var config = {
    mode: "fixed_servers",
    rules: {
      singleProxy: {
        scheme: "http",
        host: "YOU_PROXY_ADDRESS",
        port: parseInt(YOUR_PROXY_PORT)
      },
      bypassList: ["foobar.com"]
    }
  };

chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

function callbackFn(details) {
    return {
        authCredentials: {
            username: "YOUR_PROXY_USERNAME",
            password: "YOUR_PROXY_PASSWORD"
        }
    };
}

chrome.webRequest.onAuthRequired.addListener(
        callbackFn,
        {urls: ["<all_urls>"]},
        ['blocking']
);

YOUR_PROXY_*を設定に置き換えることを忘れないでください。

マニフェスト.json

{
    "version": "1.0.0",
    "manifest_version": 2,
    "name": "Chrome Proxy",
    "permissions": [
        "proxy",
        "tabs",
        "unlimitedStorage",
        "storage",
        "<all_urls>",
        "webRequest",
        "webRequestBlocking"
    ],
    "background": {
        "scripts": ["background.js"]
    },
    "minimum_chrome_version":"22.0.0"
}
  1. 作成したproxy.zipを拡張子として追加

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_extension("proxy.zip")
    
    driver = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=chrome_options)
    driver.get("http://google.com")
    driver.close()
    

それでおしまい。私にとって、それは魅力のように機能しました。proxy.zip を動的に作成する必要がある場合、または PHP の例が必要な場合は、元の投稿に移動してください

于 2016-02-09T13:13:53.273 に答える
2

ログインクレデンシャルをurlgetリクエストに追加してみることができます(Javaの場合)。

driver.get("http://username:password@google.com/")
于 2012-03-28T19:18:08.857 に答える