如何使用chrome驱动程序使用Java覆盖selenium2中的基本身份验证?

ABC*_*EFG 8 java selenium google-chrome selenium-chromedriver selenium-webdriver

如何在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();
}
Run Code Online (Sandbox Code Playgroud)

能否请你帮忙 -

谢谢,

Mik*_*ike 7

我在一个多小时内遇到了同样的问题,最后@ kenorb的解决方案救了我.简而言之,您需要添加一个浏览器扩展,为您进行身份验证(因为Selenium本身不能这样做!).

以下是ChromePython的工作原理:

  1. 创建一个包含两个文件的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']
);
Run Code Online (Sandbox Code Playgroud)

不要忘记将YOUR_PROXY_*替换为您的设置.

的manifest.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"
}
Run Code Online (Sandbox Code Playgroud)
  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()
    
    Run Code Online (Sandbox Code Playgroud)

而已.对我而言,就像一个魅力.如果您需要动态创建proxy.zip或需要PHP示例,请转到原始帖子


ken*_*nki 2

您可以尝试将登录凭据添加到 url get 请求(在 Java 中):

driver.get("http://username:password@google.com/")
Run Code Online (Sandbox Code Playgroud)

  • 正如您所发现的,基本身份验证在 Selenium 中没有很好的支持。项目页面上有一个功能请求,并列出了一些评论和解决方法。您可能想查看[此处](http://code.google.com/p/selenium/issues/detail?id=34#c32) (2认同)