Azure管道(DevOps)Selenium自动化浏览器在内存中无头运行,导致错误

时间:2018-10-19 13:58:50

标签: selenium azure-devops virtual-machine azure-pipelines

我正在运行一个Azure Pipelines(DevOps)管道,该管道将我的自动化测试解决方案构建到一个dll中,并加载该dll以获取所有集成自动化测试。

我正在使用默认的云“主机”代理来运行自动化。但是,驾驶员会抛出大量错误。我认识到的错误与我通过Jenkins设置自动化时遇到的错误-当我将Jenkins作为服务运行时一样。

要解决Jenkins中的问题,我停止了将其作为Windows服务运行,并开始在Powershell中将其作为java -jar Jenkins.war命令启动。这样一来,硒驱动程序就可以在VM桌面上正常启动浏览器,而不必在内存中完全运行浏览器实例和驱动程序。

因此,当它完全在内存中运行浏览器窗口和驱动程序时,我收到的驱动程序错误与我现在在Azure Pipelines中的主机代理上遇到的错误相同。问题是我找不到如何使代理在VM桌面上运行测试的方法。我不知道从哪里开始解决这个问题,也似乎无法在线找到任何有关此的信息。

编辑:尽可能清晰。发生的唯一错误是“未定义$”。这是因为DOM无法正确加载,因为浏览器可执行文件和驱动程序可执行文件正在无头的内存中完全运行。我需要能够在主机的渲染部分中运行可执行文件。因此,我的意思是,如果将远程桌面放入这台计算机,我会积极地看到浏览器窗口的渲染和自动化运行。但是,现在,如果我要远程访问此VM,则会在TaskManager中看到chrome.exe和chromedriver.exe,但在桌面上看不到任何东西。

1 个答案:

答案 0 :(得分:0)

我找到了答案。

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

您必须手动配置主机以运行Selenium non-headless。这将阻止所有内容作为服务运行,该服务完全在内存中,没有UI组件。这是我提到的Jenkins在将Jenkins作为服务运行时遇到的问题。

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