【发布时间】:2018-10-19 13:58:49
【问题描述】:
我正在运行一个 Azure Pipelines (DevOps) 管道,它将我的自动化测试解决方案构建到一个 dll 中,并加载该 dll 以获取所有集成自动化测试。
我正在使用默认的云“主机”代理来运行自动化。但是,驱动程序会抛出大量错误。我认识到这些错误与我通过 Jenkins 设置自动化时遇到的错误相同——当我将 Jenkins 作为服务运行时。
为了解决 Jenkins 中的问题,我停止将其作为 Windows 服务运行,并开始在 Powershell 中将其作为 java -jar Jenkins.war 命令启动。这允许 selenium 驱动程序在 VM 桌面上正常启动浏览器,而不是完全在内存中运行浏览器实例和驱动程序。
因此,当它完全在内存中运行浏览器窗口和驱动程序时,我收到了与我现在在 Azure Pipelines 中的主机代理上遇到的相同的驱动程序错误。问题是我找不到如何让代理在 VM 桌面上运行测试。我不知道从哪里开始解决这个问题,而且似乎在网上找不到任何关于此的信息。
编辑:尽可能清楚。发生的唯一错误是“$ 未定义”。这是因为 DOM 无法正确加载,因为浏览器可执行文件和驱动程序可执行文件完全在内存中运行,无头。我需要能够在主机的渲染部分中运行可执行文件。所以,我的意思是,如果我将远程桌面连接到这台机器上,我会主动看到浏览器窗口呈现,并自动运行。不过现在,如果我要远程访问这个虚拟机,我会在 TaskManager 中看到 chrome.exe 和 chromedriver.exe,但桌面上什么都看不到。
【问题讨论】:
-
对不起,你混了这么多不相关的东西,这个问题没有意义。进程始终在内存中运行,没有“VM 桌面”之类的东西。你的意思是交互运行它们还是无头运行?而且你没有分享任何错误,所以很难说这到底是怎么回事。
-
是的,一切都在内存中运行。区别在于它是否仅在内存中运行(无头),而不是在桌面上并且可见。如果您看到应用程序在任务管理器中运行,但在桌面上没有可用或可见的应用程序,则它完全在内存中运行,并且没有可供真实用户与之交互的 GUI 组件。感谢您对这个问题投反对票。我不确定自己的意思能说得清楚多少。
-
请看stackoverflow.com/help/how-to-ask。至少发布您遇到的错误会有所帮助。同时研究常见错误(其中很多在 SO 上解释)并排除它们将是一个不错的选择。
-
唯一的错误是“$”没有定义。这是因为 DOM 从不加载页面。这是一个没有 .js、没有 .css 和 html 的空白页面。
-
您好 Kiril S。感谢您的回复。问题是错误与问题无关。问题是浏览器进程(例如 Chrome.exe)和浏览器驱动程序(例如 ChromeDriver.exe)在内存中完全无头运行,没有在桌面级别呈现图形组件。产生的错误都是“$”未定义。那是因为我使用 Jquery。并且由于 DOM 未加载而发生错误。
标签: selenium azure-devops virtual-machine azure-pipelines