Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未经处理的PromisejectionWarning:错误:评估失败:DomeException:阻止具有原点(URL)的帧访问跨原点帧_Javascript_Automated Tests_Puppeteer_Google Chrome Headless - Fatal编程技术网

Javascript 未经处理的PromisejectionWarning:错误:评估失败:DomeException:阻止具有原点(URL)的帧访问跨原点帧

Javascript 未经处理的PromisejectionWarning:错误:评估失败:DomeException:阻止具有原点(URL)的帧访问跨原点帧,javascript,automated-tests,puppeteer,google-chrome-headless,Javascript,Automated Tests,Puppeteer,Google Chrome Headless,我正在使用Puppeter v1.5(),并尝试运行以下代码: 'use strict'; const puppeteer = require('puppeteer'); const fs = require('fs'); const configOptions = require('./config.json'); function evaluateRules(passedRuleset) { var doc = window.document; var ruleset = Op

我正在使用Puppeter v1.5(),并尝试运行以下代码:

'use strict';

const puppeteer = require('puppeteer');
const fs = require('fs');

const configOptions = require('./config.json');

function evaluateRules(passedRuleset) {
  var doc = window.document;
  var ruleset = OpenAjax.a11y.RulesetManager.getRuleset(passedRuleset);
  var evaluator_factory = OpenAjax.a11y.EvaluatorFactory.newInstance();
  evaluator_factory.setParameter('ruleset', ruleset);
  evaluator_factory.setFeature('eventProcessing', 'fae-util');
  evaluator_factory.setFeature('groups', 7);
  var evaluator = evaluator_factory.newEvaluator();
  var evaluation = evaluator.evaluate(doc, doc.title, doc.location.href);
  var out = evaluation.toJSON(true);
  return out;
}

(async() => {
  const browser = await puppeteer.launch();

  var numPagesEvaluated;

  for (numPagesEvaluated = 0; numPagesEvaluated < configOptions.urls.length && numPagesEvaluated < configOptions.maxPages; numPagesEvaluated++){

    const millisecondsToSeconds = 1000;

    var page = await browser.newPage();
    await page.setBypassCSP(true);

    await page.goto(configOptions.urls[numPagesEvaluated], {timeout: configOptions.wait*millisecondsToSeconds, waitUntil: 'load'});
    await page.waitFor(configOptions.delay*millisecondsToSeconds);

    if (configOptions.authentication){
      const credentialsObject = {username: configOptions.username, password: configOptions.password};
      await page.authenticate(credentialsObject);
    }

    const evaluationFileOptions = {path: './oaa_a11y_evaluation.js'};
    const ruleFileOptions = {path: './oaa_a11y_rules.js'};
    const rulesetsFileOptions = {path: './oaa_a11y_rulesets.js'};

    const evaluationFileOptionsObject = Object.create(evaluationFileOptions);
    const ruleFileOptionsObject = Object.create(ruleFileOptions);
    const rulesetsFileOptionsObject = Object.create(rulesetsFileOptions);

    await page.addScriptTag(evaluationFileOptionsObject);
    await page.addScriptTag(ruleFileOptionsObject);
    await page.addScriptTag(rulesetsFileOptionsObject);

    var results = await page.evaluate(evaluateRules, configOptions.ruleset);

    var result_index = 0;

    fs.writeFile(configOptions.outputDirectory+ "/results_" + result_index.toString() + ".json", results, function(err) {
      if(err) {
          return console.log(err);
      }

      console.log("results_" + result_index.toString() + ".json was saved!");
      result_index++;
    });

    await page.close();
  }

  await browser.close();
})();

我想出来了。修复此错误的方法是在Puppeter中启动Chrome,并使用标志“禁用web安全”。有关如何使用它的更多信息,请查看

此错误是由名为的安全策略引起的。但请注意,除非您知道自己在做什么,否则不应使用此标志,并且从安全角度来看,它的使用可能是危险的

承诺是拒绝(您在代码中处理的承诺至少有9个)-您没有处理拒绝(代码中根本没有
catch
)-因此,这就是导致此错误的原因
}().catch(console.error)
-这将处理拒绝,并可能向您显示问题所在(不过,我认为问题显然是跨来源资源共享)
(node:11688) UnhandledPromiseRejectionWarning: Error: Evaluation failed: DOMException: Blocked a frame with origin "http://illinois.edu" from accessing a cross-origin frame.
at OpenAjax.a11y.cache.DOMCache.updateDOMElements (./oaa_a11y_evaluation.js:13588:42)
at OpenAjax.a11y.cache.DOMCache.updateDOMElements (./oaa_a11y_evaluation.js:13607:17)
at OpenAjax.a11y.cache.DOMCache.updateDOMElements (./oaa_a11y_evaluation.js:13607:17)
at OpenAjax.a11y.cache.DOMCache.updateDOMElementCache (./oaa_a11y_evaluation.js:13437:8)
at Object.evaluate (./oaa_a11y_evaluation.js:35293:17)
at evaluateRules (<anonymous>:9:30)
at ExecutionContext.evaluateHandle (C:\Users\Mihir\testing\node_modules\puppeteer\lib\ExecutionContext.js:88:13)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
(node:11688) UnhandledPromiseRejectionWarning: Unhandled promise rejection. 
This error originated either by throwing inside of an async function without 
a catch block, or by rejecting a promise which was not handled with .catch().     
(rejection id: 1)
(node:11688) [DEP0018] DeprecationWarning: Unhandled promise rejections are 
deprecated. In the future, promise rejections that are not handled will 
terminate the Node.js process with a non-zero exit code.
{
    "urls": ["http://illinois.edu/"],
    "maxPages": 1,
    "wait": 30,
    "delay": 5,
    "ruleset": "ARIA_STRICT",
    "outputDirectory": ".",
    "version": "0.1",
    "authorization": false,
    "credentials": {
        "username": "",
        "password": ""
    },
    "path": "",
    "spanDomains": "",
    "includeDomains": "",
    "excludeDomains": "",
    "depth": "",
    "exportOption": "",
    "debug": ""
}