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

标签 java google-chrome selenium selenium-webdriver selenium-chromedriver

如何覆盖 selenium2 chrome 驱动程序中的基本身份验证? 我在我的项目中遇到一个问题,chrome“需要身份验证”弹出窗口即将到来,这阻止了 webdriver 继续导航。 请找到随附的屏幕截图。 enter image description here 我正在使用以下代码来实例化 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();
}

你能帮忙吗-

谢谢,

最佳答案

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

以下是它在 ChromePython 上的工作方式:

  1. 创建一个包含两个文件的压缩文件 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_* 替换为您的设置。

list .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 示例,请转至 original post

关于java - 如何使用 Chrome 驱动程序使用 Java 覆盖 selenium2 中的基本身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9888323/

相关文章:

java - Spring无法将MultiValueMap映射到bean

java - 基于种子的伪随机序列发生器

javascript - 如何将属性设置为使用 selenium javascript?

java - 将 Selenium WebDriver 与 Java 结合使用

python - WebDriverWait 多个条件(或逻辑评估)

java - 如何在java中删除字符串的第一个 "to"到第一个逗号(,)之间的值

java - 在移动设备和可穿戴设备上保存表盘设置

windows - 如何在 Windows 中的自定义协议(protocol)处理程序中转义 & 符号

javascript - 无法在 Chrome 中捕获 Chrome window.location.href

php - “blob” 链接被阻止 Livewire azure