为了执行从前到后的Web UI测试,我们使用Selenium和ChromeDriver自动执行页面加载/交互,这是我们测试包的一部分。

在开发人员测试期间(在开发人员的本地计算机上),这表现出预期的效果,但是我们正在努力执行这些检查,并将其作为持续集成构建的一部分。

我们的服务器工厂基于* NIX,并且我们所有的CI基础架构都在这些计算机上运行。为了在Windows(我们的交付机制)下测试Chrome,我们配置了Selenium Grid。运行CI测试时,它们将访问网格,以便找到要运行测试的Windows节点。

我们已经配置了Windows桌面,仅用于运行这些测试。它包含Windows 7的标准企业版。该计算机将根据IT部门的更新策略定期重新启动。

为了确保Selenium服务器始终处于运行状态,我们将Selenium Server(以“节点”模式运行)添加为Windows服务。硒服务器配置为启动ChromeDriver以调用模拟的用户交互。

但是,从CI运行测试时,它们由于超时而失败。我们的工作原理是,运行服务的系统用户无法创建交互式窗口。网络搜索提出了关于“会话0”问题的参考,但是关于如何前进的建议很少或没有建设性建议。

从交互式会话手动启动Selenium Server进程不是可行的解决方案,因为这会导致脆弱的测试-由于基础结构问题而不是真正的测试回归而导致测试失败。



每当系统重启时,如何通过Windows服务启动Selenium Server实例,该实例便能够启动Chrome实例?

最佳答案

使用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变量,然后以admin身份从控制台运行

关于selenium - 将Selenium Server和ChromeDriver作为Windows服务运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26461507/

10-12 14:57
查看更多