You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:22:04