使用 Selenium IDE 调用被 CSP 阻止的 eval()

Call to eval() blocked by CSP with Selenium IDE

我在 Selenium IDE 开发了一个 selenium 测试。我在这个套件中有一个步骤应该在文本字段中键入一个值。它在该步骤失败并出现以下错误:

18. click on id=firstName Failed:11:12:59
call to eval() blocked by CSP

CSP

内容安全策略(CSP) acts as a added layer of security that helps to detect and mitigate attacks including Cross Site Scripting (XSS)和数据注入攻击。这些攻击主要用于窃取数据和分发恶意软件。


这个错误信息...

call to eval() blocked by CSP

...意味着 add-on 正在被 Selenium IDE 使用在 CSP header.

中包含 'unsafe-eval'

根据基于 Firefox add-on needs 'unsafe-eval' in CSP header the earlier version of Firefox were not able to detect Ember.js 的应用程序的讨论,如果服务器在 [=14] 中发送 内容安全策略 header 而没有 'unsafe-eval' =] 指令。

这个问题在讨论 Convert Firefox add-on to use the Chrome WebExtension and was addressed through a installable WebExtension which can be found here 中进行了详细讨论。


更新

根据 OP 的评论,一种更简单的方法是在 about:config 中调整以下 Key-Value 以解决问题:

security.csp.enable    off

参考

您可以在 Refused to load the script because it violates the following Content Security Policy directive: script-src error with ChromeDriver Chrome and Selenium

中找到相关讨论

about:config 中禁用 CSP 是 no longer possible since Firefox 99

另一种解决方案是使用 Web 扩展程序,您可以在其中更有选择地选择 enable/disable。

假设我们要授权在 https://www.example.org/:

上执行 JS (script-src: 'unsafe-eval')

首先安装 Firefox extension ModHeader(在其他浏览器上也可用)。安装后, 打开面板:

单击 + 图标并添加 Response header:作为名称类型 Content-Security-Policy 和值类型 script-src: 'unsafe-eval'

单击 + 图标上的更多时间并添加一个 Filter。对于 URL pattern 类型 https:\/\/www.example.org/.

您可以在 CSP website 上准确选择 enable/disable 的内容。

如前所述,security.csp.enable option has been removed as of Firefox 99. While there are third party extensions to allow manipulating the CSP header (),请确保作者值得信赖。

还有一个官方的 Mozilla 扩展也可以使用:Laboratory, with an associated Laboratory video tutorial

安装完成后,基本步骤:

  1. 打开您要使用 Selenium 测试的网站 IDE
  2. 点击实验室扩展
  3. 选择“自定义 CSP 策略”
  4. 根据需要添加许可 CSP,例如allow everything
  5. 然后保存策略 运行 Selenium IDE 正常