Javascript 如何在Puppeter page.on事件中使用Mocha断言?未经处理的PromisejectionWarning:AssertionError
我试图在Puppeter的Javascript 如何在Puppeter page.on事件中使用Mocha断言?未经处理的PromisejectionWarning:AssertionError,javascript,node.js,mocha.js,puppeteer,Javascript,Node.js,Mocha.js,Puppeteer,我试图在Puppeter的页面中运行断言。但是,在('response')事件上,抛出了以下错误,并且测试错误地通过:未处理PromisejectionWarning:AssertionError 我已经读到,返回一个承诺应该可以做到这一点,但是如果我不知道事件何时停止发出,我如何解决这个承诺呢 以下是完整的示例代码: const assert = require('assert'); const puppeteer = require('puppeteer'); const config =
页面中运行断言。但是,在('response')
事件上,抛出了以下错误,并且测试错误地通过:未处理PromisejectionWarning:AssertionError
我已经读到,返回一个承诺应该可以做到这一点,但是如果我不知道事件何时停止发出,我如何解决这个承诺呢
以下是完整的示例代码:
const assert = require('assert');
const puppeteer = require('puppeteer');
const config = require('../config.json');
describe('Tests', function () {
let browser;
let page;
this.timeout(30000);
before(async function () {
browser = await puppeteer.launch({
headless: config.headless
});
page = await browser.newPage();
});
after(async function () {
await browser.close();
});
it('No responses with blacklisted URLs', async function () {
const blacklistedUrls = ['tia', 'example'];
page.on('response', response => {
blacklistedUrls.forEach(blacklistedUrl => {
const contains = response.url().includes(blacklistedUrl);
assert.equal(contains, false);
});
});
await page.goto('http://google.com/');
});
});
您可以在
页面的外部范围中使用数组。在
上填充黑名单URL,然后等待页面。转到
使用等待
选项完成页面加载,并在页面加载结束时断言数组长度。您甚至可以使用该数组在断言消息中打印列入黑名单的URL
请阅读内联评论
it('No response with blacklist url',异步函数(){
const blacklistedUrls=['tia','example'];
//有一个数组来保存每个被列入黑名单的URL
常量blacklistedUrlsFound=[];
第页('response',response=>{
//使用一些而不是forEach来评估规则,这样会更快
const hasBlacklistedUrls=blacklistedUrls.some(url=>response.url().indexOf(url)>=0);
//如果响应url包含黑名单url,请将该url添加到数组中
if(HasBlackListDurls){
blacklistedUrlsFound.push(response.url());
}
});
//访问tha页面并等待网络空闲(完成请求外部URL)
等待页面。转到('http://google.com/“,{waitUntil:[“networkidle0”]});
//最后,使用BlackListDurlsFound.length断言并打印黑名单URL
assert.equal(blacklistedUrlsFound.length>0,false,
`存在黑名单url:\n${blacklistedUrlsFound.map(url=>`\t${url}`)。join('\n')}`);
});
您将在没有任何异常错误的情况下运行测试,当然它将失败,因为存在至少包含tia
的响应URL:
你检查我的答案了吗?请让我知道,如果它没有为你工作,所以我可以重新审查它。