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

Playwright测试:如何验证点击按钮后触发连接拒绝?

Playwright验证连接拒绝场景的实现方法

你原来的写法没法直接验证连接拒绝,因为这种场景下waitForURL会直接抛出错误,不会等到目标URL。正确的做法是捕获这个错误,然后断言错误类型符合连接拒绝的特征。

直接上代码示例:

try {
  await page.locator('id=submit').click();
  // 用waitForNavigation监听导航行为,指定目标URL
  await page.waitForNavigation({ url: 'http://link-that-should-refuse-connection' });
  // 如果代码走到这里,说明导航成功了,不符合预期,主动抛出错误
  throw new Error('预期连接会被拒绝,但导航成功了');
} catch (error) {
  // 验证错误信息包含连接拒绝的标识,Playwright抛出的错误里会有"net::ERR_CONNECTION_REFUSED"
  expect(error.message).toContain('net::ERR_CONNECTION_REFUSED');
}

或者用waitForURL的写法,逻辑完全一致:

try {
  await page.locator('id=submit').click();
  await page.waitForURL('http://link-that-should-refuse-connection');
  throw new Error('预期连接会被拒绝,但导航成功了');
} catch (error) {
  expect(error.message).toContain('net::ERR_CONNECTION_REFUSED');
}

核心逻辑就是:主动触发导航后,预期会抛出连接拒绝的错误,所以用try-catch捕获,然后验证错误的特征。你提到的WebError其实就是Playwright抛出的网络相关错误,连接拒绝属于这类错误的一种,通过错误信息里的关键词就能完成验证。

内容的提问来源于stack exchange,提问作者theo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:07:03