这是我第一次使用 puppeteer 进行的笑话测试。我正在尝试登录一个站点并测试登录后第一页的标题是否正确。
这是在 headful 模式下完成的。
我可以看到登录成功。但是测试失败,vsCode 终端显示如下错误。请指教。
/**
* @name Onplan Login
* @desc Logs in and test for correct page title
*/
const puppeteer = require('puppeteer');
beforeAll(async () => {
const browser = await puppeteer.launch({
headless: false,
devtools: true
});
const page = await browser.newPage();
//await page.setViewport({ width: 4096, height: 1800 })
await page.goto('https://uat2.onplanapp.com/#/sheet/139');
await page.waitFor(1000);//was 500
await page.waitFor('#inputEmail');
await page.type('#inputEmail', 'xxx@yyy');
await page.type('#inputPassword', '1111');
await page.click('button');//Login
await page.waitForNavigation();
await page.waitFor(1000);//was 500
// SELECT COMPANY ON NEXT PAGE
await page.waitFor('#logn-screenv > form > div.row.logn-screenbody.pb-4.pt-3.px-2 > div:nth-child(2) > div > div > div.css-1hwfws3.custom-scrollbar__value-container > div.css-151xaom-placeholder.custom-scrollbar__placeholder');
await page.click('#logn-screenv > form > div.row.logn-screenbody.pb-4.pt-3.px-2 > div:nth-child(2) > div > div > div.css-1hwfws3.custom-scrollbar__value-container > div.css-151xaom-placeholder.custom-scrollbar__placeholder');//Login
// SELECT COMPANY
await page.waitFor(300);// was 1000
// Select dropdown
//select company option
await page.click('#react-select-2-option-2'); //Test company
await page.waitFor(100);//was 1000
await page.click('button[class="btn btn-block mt-3"]');
})
describe('Login', () => {
test('should be titled "Onplan"', async () => {
await page.waitFor(500);//was 1000
expect.assertions(1);
await expect(page.$('title').resolves.toEqual('Onplan'));
});
}, 10000)
afterAll(async () => {
await browser.close()
})
///////////////// 错误信息 ////////////////// PS F:\Projects\onplan_jest> npm 测试
PS F:\Projects\onplan_jest> npm 测试
onplan_jest@1.0.0 测试 F:\Projects\onplan_jest jest
FAIL ./login.test.js ● 测试套件无法运行
Protocol error: Connection closed. Most likely the page has been closed.
at Object.assert (node_modules/puppeteer/lib/helper.js:28:15)
测试套件:1 个失败,总共 1 个测试:总共 0 个快照:总共 0 个时间:6.811 秒运行所有测试套件。(节点:501740)UnhandledPromiseRejectionWarning:错误:协议错误(Runtime.callFunctionOn):目标已关闭。
在 F:\Projects\onplan_jest\node_modules\puppeteer\lib\Connection.js:148:63 在 CDPSession.send 处的新 Promise () (F:\Projects\onplan_jest\node_modules\puppeteer\lib\Connection.js:147: 16) 在 ExecutionContext._evaluateInternal (F:\Projects\onplan_jest\node_modules\puppeteer\lib\ExecutionContext.js:77:50) 在 ExecutionContext.evaluateHandle (F:\Projects\onplan_jest\node_modules\puppeteer\lib\ExecutionContext.js: 35:21)在 ExecutionContext。(F:\Projects\onplan_jest\node_modules\puppeteer\lib\helper.js:83:27) 在 ElementHandle.evaluateHandle (F:\Projects\onplan_jest\node_modules\puppeteer\lib\JSHandle.js:43:46) 在 ElementHandle . (F:\Projects\onplan_jest\node_modules\puppeteer\lib\helper.js:83:27) 在 ElementHandle.$ (F:\Projects\onplan_jest\node_modules\puppeteer\lib\JSHandle.js:347:35) 在 ElementHandle . (F:\Projects\onplan_jest\node_modules\puppeteer\lib\helper.js:83:27) -- ASYNC -- 在 ExecutionContext。(F:\Projects\onplan_jest\node_modules\puppeteer\lib\helper.js:82:19) 在 ElementHandle.evaluateHandle (F:\Projects\onplan_jest\node_modules\puppeteer\lib\JSHandle.js:43:46) 在 ElementHandle . (F:\Projects\onplan_jest\node_modules\puppeteer\lib\helper.js:83:27) 在 ElementHandle.$ (F:\Projects\onplan_jest\node_modules\puppeteer\lib\JSHandle.js:347:35) 在 ElementHandle . (F:\Projects\onplan_jest\node_modules\puppeteer\lib\helper.js:83:27) 在 DOMWorld.$ (F:\Projects\onplan_jest\node_modules\puppeteer\lib\DOMWorld.js:96:38) 在 processTicksAndRejections (internal/process/task_queues.js:97:5) -- ASYNC -- 在 Frame。(F:\Projects\onplan_jest\node_modules\puppeteer\lib\helper.js:82:19) 在 Page.$ (F: \Projects\onplan_jest\node_modules\puppeteer\lib\Page.js:219:33) 在 Page.$ (F:\Projects\onplan_jest\node_modules\puppeteer\lib\helper.js:83:27) 在 Object. (F:\Projects\onplan_jest\login.test.js:48:27) (node:501740) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict
(见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 ID:1)(节点:501740)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。错误:找不到进程“497896”。测试运行完成后一秒钟,Jest 没有退出。
这通常意味着在您的测试中没有停止异步操作。考虑运行 Jest--detectOpenHandles
来解决此问题。在对象。(F:\Projects\onplan_jest\login.test.js:48:27) (node:501740) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict
(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 ID:1)(节点:501740)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。错误:找不到进程“497896”。测试运行完成后一秒钟,Jest 没有退出。
这通常意味着在您的测试中没有停止异步操作。考虑运行 Jest--detectOpenHandles
来解决此问题。(节点:501740)UnhandledPromiseRejectionWarning:TypeError:测试环境被拆除后捕获错误
赋值给常量变量。(节点:501740)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict
(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝编号:3)