Marionette初识五---调试
1.Gecko输出的重定向
调试 Marionette 的最常用方法,以及一般的 chrome 代码:
dump():标准的输出打印字符串,在 Firefox 中,此日志输出通常会出现在当前工作目录中的 gecko.log 文件中,在Fennec中,可以使用 adb logcat 对其进行检查。
--gecko-log: 在mach marionette-test
中选取,可以重定向输出流。
如果想将测试工具输出与来自浏览器的标准输出“合并”,根据 Unix 约定,可以使用 -(破折号)让 Firefox 将其日志写入标准输出而不是文件:
% ./mach marionette-test --gecko-log -
通常将此与增加 Marionette 日志级别的选项结合使用:
% ./mach test --gecko-log - -vv TEST
-v : 启用调试日志记录
-vv: 启用跟踪日志记录
常在 Python 客户端中使用 pdb ,以及 JS 远程调试器结合使用。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.JavaScript调试器
使用 --jsdebugger 标志将Browser Toolbox的 JavaScript 调试器附加到 Marionette 服务器。 这使您能够在 Gecko chrome 代码中内省和设置断点,这是一种比使用 dump() 或 console.log() 更强大的调试技术。
为 Mn 测试自动打开 JS 调试器:
% ./mach marionette-test --jsdebugger
它会提示何时开始,以便有时间设置断点,还会在每次测试之间提示。 在 chrome 代码中的任何位置声明debugger;以添加断点。 在这个例子中,每当调用 WebDriver:GetPageSource 命令时,都会添加一个断点:
GeckoDriver.prototype.getPageSource = async function() { debugger; … }
要在测试运行开始时或测试之间得到提示,可以通过将 marionette.debugging.clicktostart 首选项设置为 true:
% ./mach marionette-test --setpref='marionette.debugging.clicktostart=true' --jsdebugger
作为参考,以下是为 Marionette 启用 chrome 调试器的首选项列表。 这些都是在 --jsdebugger 传递给 mach 时隐式设置的。 在非官方构建中,这是使用 ./mach build 构建时的默认设置,您会发现 chrome 调试器不会提示连接,而是允许远程连接。
devtools.browsertoolbox.panel -> jsdebugger 默认情况下选择调试器面板。 devtools.chrome.enabled → true 启用 chrome 代码的调试。 devtools.debugger.prompt-connection → false 控制远程连接提示。请注意,这会自动将您的 Firefox 实例暴露给 localhost。 devtools.debugger.remote-enabled → true 允许远程调试器连接,这是调试 Chrome 代码所必需的。