如何在TestCafe中配置允许浏览器重定向及弹窗?
TestCafe 重定向与弹窗配置问题解答
我来帮你解决这两个TestCafe的问题,都是实际测试中常见的场景:
1. 如何允许浏览器的所有重定向?
TestCafe默认其实会自动跟随所有浏览器重定向,一般情况下你不需要额外做配置。但如果你的测试涉及跨域重定向,或者遇到TestCafe安全策略限制了跳转的情况,可以用下面两种方式来开启全量允许:
- 命令行参数:运行测试时加上
--allow-external-pages参数,这个参数会允许TestCafe访问测试目标域名之外的页面,包括跨域重定向的目标页。示例命令:testcafe chrome your-test-folder/ --allow-external-pages - 配置文件持久化:在项目根目录创建
.testcaferc.json文件,添加如下配置,这样每次运行测试都会自动应用该设置:{ "allowExternalPages": true }
2. 配置TestCafe允许所有弹窗(解决支付模块处理中问题)
你碰到的这个情况很典型——TestCafe启动Chrome时会用一个干净的临时配置环境,完全独立于你平时用的Chrome个人配置,所以你手动修改的弹窗设置根本不会生效。要解决这个问题,必须通过TestCafe的启动参数来指定浏览器允许弹窗:
- 命令行参数:直接加上
--disable-popup-blocking参数,就能让TestCafe启动的Chrome实例自动允许所有弹窗和重定向弹窗。示例命令:
如果支付模块的跳转同时涉及跨域重定向,你可以把两个参数结合起来使用:testcafe chrome your-test-folder/ --disable-popup-blockingtestcafe chrome your-test-folder/ --allow-external-pages --disable-popup-blocking - 编程式运行测试(Node.js脚本):如果你的测试是通过Node.js脚本启动的,可以在创建TestCafe实例时,通过
browserOptions配置禁用弹窗阻止:const createTestCafe = require('testcafe'); let testcafe = null; createTestCafe('localhost', 1337, 1338) .then(tc => { testcafe = tc; const runner = testcafe.createRunner(); return runner .src('your-test-folder/') .browsers({ browser: 'chrome', options: { disablePopupBlocking: true, allowExternalPages: true } }) .run(); }) .then(failedCount => { console.log('Tests failed: ' + failedCount); testcafe.close(); });
内容的提问来源于stack exchange,提问作者Benny Meade
相关产品推荐
相关产品推荐

