如何调试从Windows服务运行的Firefox,但无法设置“允许服务与桌面交互”

问题描述:

我有在Windows上的3个浏览器中运行产品测试的自动化测试设置:IE 11,Chrome和Firefox(55.0.3和56.0 .b7被试用)。 手动运行测试在特定用户的特定机器上的所有3个浏览器中都能正常运行。如何调试从Windows服务运行的Firefox,但无法设置“允许服务与桌面交互”

但是,如果要使用从同一用户作为Windows服务运行的Jenkins从服务器运行测试,它只适用于IE 11和Chrome,但一开始就与Firefox失败。 由于Firefox是从Windows服务运行的,因此没有UI,因此我无法得到Firefox需要的工作。

我怀疑它挂在“你想让我默认浏览器?”的对话框上。 对于测试配置文件,特定设置在about:config中设置为false,但我无法在任何地方找到完整的对话框列表,因此我无法确定是否已关闭所有对话框。

主要问题是,我看不到问题:如果我启用“允许服务与桌面交互”为詹金斯奴隶,它得到正常工作。不幸的是,Jenkins奴隶不能保留这个选项,因为它必须从特定用户运行,并且没有这种情况。

任何想法如何调试Firefox需要什么,如果你不能看到浏览器用户界面? 我已经尝试使用NSPR_LOG_MODULES=all:5NSPR_LOG_FILE=<path-to-log>来捕获Firefox日志,但在日志中没有找到任何线索。

我还能做些什么来找到问题的根源? 我可以连接到远程运行Firefox来查看它的功能或等待吗? 我可以捕获其他日志吗?

一些测试设置细节

生成系统基于詹金斯和特定步骤经由詹金斯从属运行Windows 7的机器上运行作为从特定的用户的Windows服务。 测试是Node.js的脚本,请执行下列操作步骤:

  1. 运行本地HTTP服务器来服务测试页,它使用
  2. 运行浏览器加载页面(适用于Firefox是以下命令行资源: <full path to firefox>/firefox.exe -no-remote -profile <full-path-for-prepared-profile> <url-to-test-page>
  3. 等待来自浏览器的HTTP请求确认页面 准备运行测试
  4. ...

如果失败,第3步的请求永远不会发生,所以看起来Firefox由于未知原因而无法加载页面。

经过长期的长期调查,我的同事找到了根本原因以及如何解决它(如果要更精确的话,可以将其解决)。

似乎在这种情况下Bug1400637发生,并在Firefox v57.0中工作它需要设置security.sandbox.content.level4about:config

此外,我已经了解到,在Firefox这样的问题可能值得看看about:crashes,它有助于找到根本原因,甚至找到解决方案。