Selenium IDE中调用eval()被CSP阻止问题求助
看起来你在Selenium IDE里执行点击firstName元素的步骤时踩了CSP的坑——这个call to eval() blocked by CSP错误其实很好理解:目标页面的**内容安全策略(CSP)**禁止了eval()这类动态代码执行操作,而Selenium IDE在底层处理元素交互时,刚好用到了被CSP限制的eval()方法,所以直接报错了。
给你几个实用的解决思路,按优先级来:
优先调整Selenium IDE的设置
打开IDE右上角的齿轮图标进入设置,找「Experimental Features」或者「高级设置」板块,找到类似「启用原生事件」或者「避免使用eval()执行命令」的选项并勾选。IDE会切换到更合规的交互方式,绕过CSP对eval()的限制,大部分情况下这个方法就能解决问题。如果有权限修改测试环境的网站,调整CSP规则
要是你能控制测试页面的配置,可以给页面的CSP头添加unsafe-eval权限,比如把script-src指令改成:Content-Security-Policy: script-src 'self' 'unsafe-eval';注意哈,这个操作会降低网站的安全等级,只建议在测试环境里用,别放到生产环境。
换用WebDriver代码实现测试用例
如果上面两个方法都不管用,可以把IDE里的用例导出成WebDriver代码(比如Python、Java),直接用代码执行。WebDriver的原生交互逻辑不会依赖eval(),比如Python的示例代码:from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("你的测试页面URL") # 先点击输入框,再输入内容 first_name_input = driver.find_element(By.ID, "firstName") first_name_input.click() first_name_input.send_keys("你的测试输入值")
另外可以先做个小排查:在浏览器控制台手动执行document.getElementById('firstName').click(),如果也触发CSP错误,那就是页面本身的CSP限制;如果手动执行没问题,那肯定是IDE的执行方式导致的,直接调IDE设置就行。
内容的提问来源于stack exchange,提问作者cristid9

