尝试使用Axe Core进行可访问性测试时出现错误“org.openqa.selenium.JavascriptException:javascript错误:eval被禁用”

尝试使用Axe Core进行可访问性测试时出现错误“org.openqa.selenium.JavascriptException:javascript错误:eval被禁用”,javascript,selenium-webdriver,accessibility,Javascript,Selenium Webdriver,Accessibility,我正在尝试使用Axe核心工具(使用Java作为编程语言)进行可访问性测试。我能够从我的应用程序中的许多页面中获得结果,但对于其中一个页面,我得到的错误如下: org.openqa.selenium.JavascriptException: javascript error: eval is disabled (Session info: chrome=81.0.4044.138) Build info: version: '3.141.59', revision: 'e82be7d358',

我正在尝试使用Axe核心工具(使用Java作为编程语言)进行可访问性测试。我能够从我的应用程序中的许多页面中获得结果,但对于其中一个页面,我得到的错误如下:

 org.openqa.selenium.JavascriptException: javascript error: eval is disabled
(Session info: chrome=81.0.4044.138)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'XXXX', ip: 'XXXX', os.name: 'Windows 10', os.arch: 'amd64', 
os.version: '10.0', java.version: '1.8.0_131'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 81.0.4044.138, chrome: 
{chromedriverVersion: 81.0.4044.138 (8c6c7ba89cc9..., userDataDir: C:\Users\NASEEM~1.AHM\AppDa...}, 
goog:chromeOptions: {debuggerAddress: localhost:52030}, javascriptEnabled: true, 
networkConnectionEnabled: false, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, 
proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, 
pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:virtualAuthenticators: true}
Session ID: cbdfe9de190b8224da1ec675bef90966
我在代码中得到了上述错误

 JSONObject responseJSON = new AXE.Builder(driver, scriptUrl).analyze(); 
在Chrome浏览器中运行测试时出现此错误。我在Firefox浏览器中执行了相同的代码,在那里我可以毫无问题地运行它

运行测试时需要添加哪些内容?我应该包括哪些期望的功能


请建议

我的怀疑是,由于您正在测试的站点有

内容安全策略CSP允许网站所有者通过确保没有恶意的第三方JS、CSS图像等被注入网站来保护其最终用户。CSP中包含的任何内容都是允许的,未包含的任何内容都将被阻止

在CSP中,它将阻止程序中所需的JavaScript eval函数

如果您的CSP中有任何JS规则,则站点所有者必须明确允许在其站点上使用eval,因为默认情况下,通过将不安全eval添加为其CSP上的规则之一,该站点将被阻止

摘自我在CSP上链接的页面:-

“不安全评估”

允许使用eval和类似方法从中创建代码 串。必须包含单引号

解决这一问题的唯一方法是要求站点所有者将其添加到他们的CSP中,或者更改将eval注入站点的任何函数

如果你想另一个网站进行测试,以确认是CSP阻止了你的脚本,你可以试试我的,因为我的CSP非常严格

对话后更新 看来我找到了正确的问题,但没有找到原因

这是由网站覆盖window.eval抛出一个错误导致的,基本上是禁用它。下面的小提琴以最基本的形式展示了这种行为

window.eval=函数{ 抛出新的Errorwindow.eval被禁用; }
eval1;很长一段时间没有看到这个,但是你在网站上有内容安全政策吗?不确定…有什么办法我可以检查,请让我知道。如前所述,我可以在Firefox上运行测试,这是我唯一面临的问题。是的,看看开发者工具中网络选项卡上的标题,你会看到一个叫做内容安全策略:,或者它可能在中,是的,我可以看到标题作为内容安全策略:有一些大的值…你能复制到这里吗,感谢您的回复,但是它在Firefox中的工作方式。此外,我还检查了同一应用程序中的其他页面,在那里我可以看到内容安全策略标题,但在那里我可以在Chrome浏览器中正确运行代码……问题只存在于此页面。此外,我还尝试在Chrome浏览器中运行您站点中的代码。我可以运行没有任何问题。我一定是错的,它是CSP,但你有一个问题,没有运行eval,也许有一些关于特定的网站,你的测试,需要在它上运行eval的是不同于我的网站?抱歉,巴德,希望你能找到解决方案。我想,站点是否会覆盖脚本中的window.eval?尝试在控制台中键入eval1,看看它是否在站点上运行。它将在我的网站上运行,如果它是页面的一部分,那么评估确实是允许的,我想我一直误解了不安全的评估