【问题标题】:Azure Pipelines (DevOps) Selenium Automation Browsers Running Headless in Memory Causing ErrorsAzure Pipelines (DevOps) Selenium 自动化浏览器在内存中无头运行导致错误
【发布时间】: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


【解决方案1】:

我找到了答案。

https://docs.microsoft.com/en-us/azure/devops/pipelines/test/ui-testing-considerations?view=vsts&tabs=mstest#visible-ui-mode

您必须手动配置主机以运行 Selenium 非无头。这将阻止一切作为服务运行,该服务纯粹在内存中,没有 UI 组件。这就是我提到的 Jenkins 在将 Jenkins 作为服务运行时遇到的问题。

最终,Jenkins 使用 GUI 运行自动化的修复与 Azure 管道中的托管代理相同。这只是手动配置。这是通过插件和管道中的构建步骤完成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多