将Selenium Server和ChromeDriver作为Windows服务运行

jwa*_*jwa 14 selenium webdriver selenium-webdriver

因此,我们可以执行从前到后的Web UI测试,我们使用Selenium和ChromeDriver自动化页面加载/交互作为我们测试包的一部分.

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

我们的服务器工厂基于*NIX,我们所有的CI基础设施都在这些机器上运行.因此我们可以在Windows(我们的交付机制)下测试Chrome,我们已经配置了Selenium Grid.当CI测试运行时,他们访问网格,以便找到运行测试的Windows节点.

我们已经配置了Windows桌面,仅用于运行这些测试.这包含我们标准的Windows 7企业版本.该机器将定期重新启动,与IT部门的更新策略一致.

为了确保Selenium服务器始终运行,我们将Selenium Server(以"节点"模式运行)添加为Windows服务.selenium Server配置为启动ChromeDriver以调用模拟的用户交互.

但是,从CI运行测试时,由于超时而失败.我们的工作原理是,运行服务的系统用户无法创建交互式窗口.网络搜索引发了对"会话0"问题的引用,但对如何向前推进几乎没有建设性意见.

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


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

Roc*_*oon 18

使用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
Run Code Online (Sandbox Code Playgroud)

如果需要,它提供了轻松删除服务的方法:

nssm remove seleniumnode confirm
Run Code Online (Sandbox Code Playgroud)

将目标添加到您的PATH变量nssm并以管理员身份从控制台运行

  • 当我弄清楚NSSM代表什么时,我笑了. (3认同)

小智 6

现在你无法帮助它 - 它曾经在会话0中正常工作,但在Chrome更新后的过去几天仅适用于交互式会话.

相关错误:

https://code.google.com/p/selenium/issues/detail?id=8029 https://code.google.com/p/chromium/issues/detail?id=422218


dja*_*fan 5

自 Windows Vista 以来,您不能将 Selenium Grid 作为 Windows 服务运行。微软称之为“会话 0 隔离”。您可以在 Windows 2000 或 XP 中执行此操作,但是自从 Vista 出现以来,Microsoft 不再让 Grid 与桌面(或任何其他 UI 程序)进行交互。不管您仍然看到“与桌面交互”复选框,这是一个红鲱鱼。因此,您必须在该服务器的前台运行 Selenium Grid 才能访问会话。如果它运行的是 Windows Server,理论上你可以有多个会话并让 Grid 在非零用户会话之一的前台运行。