运行硒服务器和ChromeDriver作为Windows服务
这样我们就可以执行前到后的Web UI测试中,我们使用硒和ChromeDriver到页面加载/互动自动化作为我们的测试包的一部分。运行硒服务器和ChromeDriver作为Windows服务
这是行为的开发人员测试(开发者的本地机器上)在如预期,但我们正在努力执行这些检查作为我们持续集成构建的一部分。
我们的服务器工厂是基于* NIX的,我们所有的CI基础设施都在这些机器上运行。为了我们可以在Windows下测试Chrome(我们的交付机制),我们已经配置了一个Selenium Grid。当CI测试运行时,他们访问网格,以便找到一个Windows节点来运行测试。
我们安装了Windows桌面专门用于运行这些测试。这包含我们标准的Windows 7企业版本。本机将定期重新启动,以符合IT部门的更新策略。
在努力确保硒服务器始终运行,我们增加了Selenium服务器作为Windows服务(在“节点”模式下运行)。硒服务器配置为启动ChromeDriver以调用模拟的用户交互。
但是,从CI运行测试时,由于超时而失败。我们的工作理论是,运行服务的系统用户不能创建交互式窗口。网络搜索引发了对“Session 0”问题的提及,但对于如何向前推进几乎没有建设性的建议。
从交互式会话手动启动Selenium服务器的过程不是一个可行的解决方案,因为这是导致脆性试验 - 这是一个基础设施问题没有到期,而不是一个真正的回归测试。
,我们怎么能有硒Server实例通过Windows服务启动时系统重新启动,它能够启动Chrome实例?
现在你不能帮助它 - 它用来工作在会话0罚款,但镀铬更新后,这几天只适用于互动环节。
相关的问题:
https://code.google.com/p/selenium/issues/detail?id=8029 https://code.google.com/p/chromium/issues/detail?id=422218
您不能运行硒网格和以往Windows服务,因为Windows Vista中。微软称之为“会话0隔离”。您可以在Windows 2000或XP中执行此操作,但自Vista发布以来,Microsoft不再允许网格与桌面(或其他任何UI程序)进行交互。无论您仍然看到“与桌面交互”复选框,这是一条红鲱鱼。所以,你必须在该服务器的前台运行Selenium Grid,以便它能够访问会话。如果它运行的是Windows Server,理论上可以有多个会话,并且在非零用户会话之一的前台使网格运行在前台。
同意:(你可以使用nssm作为服务启动集线器,但是如果节点作为服务启动,你将无法“看见”浏览器。对于某些人可能不是问题,但它适用于我。该节点作为批处理文件运行,要开始自动将其添加到“启动”文件夹或创建一个更棘手的任务计划程序。 – oden 2016-04-06 11:49:13
我首选的解决了这个问题(以及运行网格硒作为一种服务我的默认选项)是使用一种称为AlwaysUp简单的工具。它有30天免费试用期。
怎么办:
- 下载AlwaysUp
- Configure AlwaysUp to start the Selenium Grid节点上启动
- 配置AlwaysUp到run the Selenium node as a specific user(不是默认的系统用户)
这样的节点将运行作为服务,在机器重新启动后仍能继续使用,并可使用最新版本的Chrome。
如果您用来登录到计算机的用户帐户与您指定将该节点作为服务运行的用户帐户不同,那么您将看不到在桌面上弹出的浏览器,因为它们在不同的用户中运行会话。最终的结果是,它与作为普通服务运行几乎相同,但围绕着Session 0问题。
这与NSSM有什么不同吗?https://nssm.cc/ – 2016-09-14 15:29:16
可以用NSSM轻松完成。 安装服务看起来像这些:
nssm install seleniumhub java -jar C:\selenium\selenium-server-standalone-2.45.0.jar -role hub -hubConfig C:\selenium\hub.json
nssm install seleniumnode java -jar C:\selenium\selenium-server-standalone-2.45.0.jar -role node -nodeConfig C:\selenium\node.json
它提供了轻松的方式,如果需要删除服务:
nssm remove seleniumnode confirm
添加目的地NSSM到PATH环境变量,并从控制台管理运行
是的,你应该使用NSSM。重要的是,您可以在“登录”选项卡或任何其他有效帐户中添加您的Windows帐户。如果使用“本地系统帐户”选项运行节点,则会出现会话0问题。在正常的用户会话中,节点在后台运行时平稳无形:)
是否存在Chrome的特定版本,您知道它在Session 0中有效?如果我可以简单地降级,那么这将是一个选择。 – jwa 2014-10-20 13:54:30
在38之前版本的Chrome中,所有作为windows服务都可以正常工作。自38版以来 - 我的selenium windows服务无法使用。降级Chrome解决了我的问题 – razon 2014-10-30 09:50:13
我可以确认@razon在说什么。在服务中运行时,Chrome 37是最后一个已知版本。 – 2015-07-08 11:26:03