在 运行 测试(网络驱动程序)时放宽 Chrome 的 CSP (Content-Security-policy)

Relaxing Chrome's CSP while running tests (webdriver) (Content-Security-policy)

我正在尝试放松 Chrome 的 CSP,同时 运行 使用 proctractor(webdriver、chromedriver)进行测试。

所以解决方案可以是

  1. 根据我的搜索结果,像“--disable-csp”这样的标志不存在。
  2. webdriver/protractor 的设置。

我找不到任何解决方案,只能设置一个过滤 header 的代理。

有什么想法吗?

目前没有本机选项,但您可以使用扩展禁用 CSP。

步骤:

  1. 下载扩展Disable Content-Security-Policy
  2. 另存为.zip,因为需要修改才能在启动时启用"disable CSP"
  3. 解压文件或使用 Winrar 双击文件 background.js 进行编辑
  4. var isCSPDisabled = false;更改为true
  5. 保存更改。

代码

chrome_options = Options()
chrome_options.add_extension('path/to/disableCSP.zip') # or disableCSP.xpi
driver = webdriver.Chrome(chrome_options=chrome_options)

我更新了@ewwink 的回答

  1. 转到扩展开发者的网站Disable CSP github
  2. 下载 zip 格式的扩展代码
  3. 解压并修改 background.js 文件:
    var isCSPDisabled = function (tabId) {
        return true; // disabledTabIds.includes(tabId);
    };
  1. 在 Chrome 中转到: ... -> 工具 -> 扩展 -> 激活开发者模式 -> 打包扩展 ... 选择修改后的文件夹作为根目录 -> 将字段:private key file 留空 -> 这将在扩展文件夹旁边创建一个 .crx 文件,以及一个私钥,就好像它是开发者
  2. 像这样使用生成的 crx 文件:
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options

    chrome_options = Options()
    chrome_options.add_extension("/path/to/chrome-csp-disable-master.crx")
    driver = webdriver.Chrome(executable_path="/path/to/chromedriver", options=chrome_options)
    driver.get("https://www.google.com/")

来源:Load chrome extension using selenium