Mac端Playwright测试已通过但控制台报错问题求助
Playwright测试显示通过但存在非测试报错排查
测试代码
import {chromium, test} from "@playwright/test" test("login test demo", async() => { const browser = await chromium.launch({ headless: false }); const context = await browser.newContext(); const page = await context.newPage(); (await page).goto ("https://ecommerce-playground.lambdatest.io"); (await page).hover("//a[@data-toggle='dropdown']//span[contains(.,'My account')]"); (await page).click("text=Login") })
控制台报错信息
tests/login.test.ts:3:6 › login test demo at tests/login.test.ts:11 9 | const page = await context.newPage(); 10 | > 11 | (await page).goto ("https://ecommerce-playground.lambdatest.io"); | ^ 12 | (await page).hover("//a[@data-toggle='dropdown']//span[contains(.,'My account')]"); 13 | (await page).click("text=Login") 14 | at /Users/dwayne/Documents/Development/Learn-Playwright /tests/login.test.ts:11:17 1 passed (2.4s) 1 error was not a part of any test, see above for details Dwaynes-MacBook-Pro:Learn-Playwright dwayne$
问题原因
核心是语法错误:第9行const page = await context.newPage();已经通过await拿到了Page实例对象,而非Promise。后面代码里的(await page)是把已经是对象的page当成Promise去await,这会触发运行时错误。
测试显示"已通过"是因为这个错误没被测试用例的捕获逻辑覆盖,但代码执行逻辑已经异常。
解决方案
去掉所有(await page)里的await和多余括号,直接调用Page实例的方法即可。修正后的代码:
import {chromium, test} from "@playwright/test" test("login test demo", async() => { const browser = await chromium.launch({ headless: false }); const context = await browser.newContext(); const page = await context.newPage(); await page.goto("https://ecommerce-playground.lambdatest.io"); await page.hover("//a[@data-toggle='dropdown']//span[contains(.,'My account')]"); await page.click("text=Login"); // 手动关闭浏览器,避免资源泄漏 await browser.close(); })
内容的提问来源于stack exchange,提问作者Miller90
相关产品推荐
相关产品推荐

