【问题标题】:nightwatch - debugging with node.js and Chromenightwatch - 使用 node.js 和 Chrome 进行调试
【发布时间】:2017-08-02 09:26:19
【问题描述】:
有没有办法在命令链中调试 nightwatch,或者在 chrome DevTools 中调试注入的代码?
例如,我想调试“窗口”对象:
我使用 chrome 版本 59.0.3071.115。
根据ChromeDriver - WebDriver for Chrome,只要 DevTools 打开,DevTools 就会始终与 ChromeDriver 断开连接。意思是,如果我在执行命令(图像)中注入代码,DevTools 将关闭并且我必须再次重新打开它?意思是,我什至不能在前端调试它?
谢谢!
【问题讨论】:
标签:
node.js
selenium
debugging
visual-studio-code
nightwatch.js
【解决方案1】:
显然,在命令队列中调试或设置断点的唯一方法是通过回调,如下例所示。
设置断点以检查浏览器中的页面
有时在浏览器中间检查页面很重要
的测试用例运行。例如,验证使用的选择器。暂停
在正确的时刻执行在回调中设置断点:
browser.perform(function () {
console.log('dummy statement'); // install a breakpoint here });
取自https://github.com/nightwatchjs/nightwatch/wiki/Understanding-the-Command-Queue的示例。
除了:
除了execute命令,因为nightwatch是直接将指定的脚本注入到浏览器中,会在浏览器中直接执行。此外,chrome每页只允许一个DevTools,因此每次必须执行命令时它都会尝试重新打开DevTools。
DevTools 窗口不断关闭
这是正常的。
当你打开 DevTools 窗口时,ChromeDriver 会自动
断开连接。当 ChromeDriver 收到命令时,如果断开连接,
它将尝试关闭 DevTools 窗口并重新连接。
Chrome 的 DevTools 每页只允许一个调试器。从 2.x 开始,
ChromeDriver 现在是一个 DevTools 调试客户端。以前的版本
ChromeDriver 使用了不同的自动化 API,它不再是
Chrome 29 支持。
如果您需要在 DevTools 中检查某些内容,您现在可以做的最好的事情
暂停您的测试,以便 ChromeDriver 不会关闭 DevTools。当你
在 Chrome 中完成检查后,您可以取消暂停测试并
ChromeDriver 将关闭窗口并继续。
来源:https://sites.google.com/a/chromium.org/chromedriver/help/devtools-window-keeps-closing