Playwright测试中异步函数enterA无法向Textbox A传值的问题
问题原因与解决方案
问题根源
你抽离的enterA是异步函数,但在测试用例中调用时没有添加await关键字。异步函数调用后会返回一个Promise,若不等待这个Promise完成,代码会直接往下执行,enterA内部的文本框填充操作可能还没开始或完成,就已经执行到填充Textbox B的逻辑,导致Textbox A没有被正确填充。
修复代码
修改测试用例中调用enterA的代码,添加await:
test('simple form', async ({ page }) => { console.log(`Navigating to ${simpleFormUrl}`); await page.goto(simpleFormUrl); const a = 3; const b = 2; var expectedResult = a + b; // 添加await,等待enterA的异步操作完成 await enterA(page, a); const textboxB = await page.$('#value2'); await textboxB.type(b.toString()); });
为什么内联时正常?
内联代码时,你直接在测试函数的异步上下文里使用了await,会等待page.$和type操作完成;而抽离成独立异步函数后,必须显式用await等待该函数的Promise完成,否则异步操作会被“丢弃”,无法保证执行顺序和结果。
内容的提问来源于stack exchange,提问作者nie podam
相关产品推荐
相关产品推荐

