我正在尝试使用puppeteer在jasmine中运行一个简单的测试,但是当我在我的测试脚本中使用它时,我无法让puppeteer工作:
const puppeteer = require('puppeteer');
describe("Jasmine puppeteer", function() {
let browser;
let page;
beforeAll(() => {
browser = await puppeteer.launch({headless: false});
page = await browser.newPage();
await page.goto('chrome://newtab');
await page.screenshot({path: 'a.png'});
})
it("jasmine puppeteer", () => {
expect(await page.title()).toBe("");
done();
});
afterAll(() => {
})
});
在运行此脚本时,我得到:
$ npm test spec/testspec.js
> test@0.0.1 test D:\sample
> jasmine "spec/testspec.js"
D:\sample\spec\testspec.js:10
browser = await puppeteer.launch({headless: false});
^^^^^^^^^
SyntaxError: Unexpected identifier
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:607:28)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Module.require (module.js:587:17)
at require (internal/module.js:11:18)
at D:\sample\node_modules\jasmine\lib\jasmine.js:93:5
npm ERR! Test failed. See above for more details.
npm test
简单地指向jasmine
。如果我注释木偶师相关的代码,测试就能正常工作。
发布于 2018-01-29 17:50:20
await
只能在async function
内部工作。
beforeAll((done) => {
let screenshot = async function() {
browser = await puppeteer.launch({ headless: false });
page = await browser.newPage();
await page.goto('chrome://newtab');
await page.screenshot({ path: 'a.png' });
}
screenshot().then(done)
})
发布于 2018-01-29 18:50:47
根据第一个答案,我将所有awaits
都放在async
函数中。然而,我仍然不能运行测试脚本。根据this github issue的说法,jasmine不支持async/await,一些评论建议解决这个问题。
生成工作脚本:
const puppeteer = require('puppeteer');
function testAsync(specFunction) {
return (done) => {
specFunction().then(() => {
done();
}).catch((error) => {
done.fail(error);
});
};
}
describe("Jasmine puppeteer", function() {
let browser;
let page;
beforeAll(testAsync(async () => {
browser = await puppeteer.launch({headless: false});
page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'a.png'});
}));
it("jasmine puppeteer", testAsync(async () => {
expect(await page.title()).toBe("");
}));
afterAll(() => {
})
});
发布于 2018-06-04 06:44:31
您的代码应该是这样的‘’it("jasmine puppeteer",async () => { expect(await page.title()).toBe("");done();});‘
https://stackoverflow.com/questions/48497986
复制相似问题