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
相关产品推荐
相关产品推荐

