【发布时间】:2014-06-15 21:24:23
【问题描述】:
Angular Protractor 测试运行后是否可以让测试浏览器窗口保持打开状态?我有一个在 FireFox 中失败的艰难测试,访问网页的状态以查看发生了什么会很有用。
【问题讨论】:
标签: angularjs protractor
Angular Protractor 测试运行后是否可以让测试浏览器窗口保持打开状态?我有一个在 FireFox 中失败的艰难测试,访问网页的状态以查看发生了什么会很有用。
【问题讨论】:
标签: angularjs protractor
您可以使用 Protractor 调试/暂停功能来暂停 e2e 运行,这最终会使浏览器保持打开状态:more info here
为此,请将此行添加到量角器测试中失败的测试之前
browser.pause();
还有一个非常有用的工具,叫做elementor,您以后可能想看看。
【讨论】:
browser.pause(); 和elementor 尝试新的最新量角器
browser.pause 不再适用于当前的 Node v8.1.0,请参阅 here,但您可以使用 browser.sleep(10000); 保持浏览器打开,例如10 秒
【讨论】:
如果您将测试脚本配置为使用 grunt 运行,则可以使用以下代码:
grunt.initConfig({
// ...
protractor: {
options: {
configFile: "protractor.conf.js",
keepAlive: true, // If false, the grunt process stops when the test fails.
noColor: false // If true, protractor will not use colors in its output.
},
run: {}
},
// ...
});
【讨论】:
keepAlive 对我不起作用。但是,我可以使用browser.sleep(60e3); 阻止浏览器关闭一分钟
如果您拥有 Node 8+,在尝试来自 the accepted answer 的 browser.pause 解决方案时遇到问题 "Error: Cannot find module '_debugger'",并且您无法使用 this github solution 修复它,那么您可以按以下方式解决它:
将量角器安装为自动化框架的模块(即不带-g 标志)
npm install protractor
也为这个量角器实例运行webdriver-manager update:
node ./node_modules/protractor/bin/webdriver-manager update
如果您的代码中有 browser.pause();,请将其替换为 debugger; 语句
按如下方式运行您的代码:
node inspect ./node_modules/protractor/bin/protractor protractorConf.js
protractorConf.js 是量角器实例的配置文件
如果debugger 在命令行等待您的输入,只需键入cont 并回车(以continue 执行)
【讨论】:
这个想法是,您并不是真的想保持会话活动,而是在测试完成后将其暂停很长时间,并能够随时恢复关闭过程
所以只需将其添加到您的config.js
async onComplete() {
await browser.waitForAngularEnabled(false);
await browser.wait(
async () => {
let url = await browser.getCurrentUrl();
return url.includes('close/');
},
5 * 60 * 1000,
'Keep-alive timeout reached, closing the session...',
);
},
代码的作用是,在所有测试通过或失败后,它会等到您在浏览器的 url 字段中输入并提交 close/,或者在 5 分钟内超时。
这里之所以需要await browser.waitForAngularEnabled(false);,是因为当你输入close/时浏览器会打开一个空白页面,这是非角的
您甚至可以根据传递给量角器配置的参数对其进行改进并使其有条件
【讨论】: