【发布时间】:2014-12-15 04:34:54
【问题描述】:
为了执行从前到后的 Web UI 测试,我们使用 Selenium 和 ChromeDriver 来自动化页面加载/交互,作为我们测试包的一部分。
这在开发人员测试期间(在开发人员的本地机器上)表现如预期,但作为我们持续集成构建的一部分,我们正在努力执行这些检查。
我们的服务器工厂基于 *NIX,我们所有的 CI 基础架构都在这些机器上运行。为了我们可以在 Windows 下测试 Chrome(我们的交付机制),我们配置了一个 Selenium Grid。当 CI 测试运行时,它们会访问网格,以便找到要在其上运行测试的 Windows 节点。
我们有一个专门用于运行这些测试的 Windows 桌面。这包含我们的标准企业版 Windows 7。这台机器将根据 IT 部门的更新政策定期重启。
为了确保 Selenium 服务器始终运行,我们将 Selenium 服务器(以“节点”模式运行)添加为 Windows 服务。 selenium 服务器配置为启动 ChromeDriver 以调用模拟的用户交互。
但是,当从 CI 运行测试时,它们会因超时而失败。我们的工作原理是,运行服务的系统用户不能创建交互式窗口。网络搜索提到了“会话 0”问题,但几乎没有关于如何前进的建设性建议。
从交互式会话手动启动 Selenium Server 进程不是一个可行的解决方案,因为这会导致脆弱的测试 - 由于基础设施问题而不是真正的测试回归而失败。
我们如何在系统重新启动时通过 Windows 服务启动 Selenium Server 实例,从而能够启动 Chrome 实例?
【问题讨论】:
标签: selenium selenium-webdriver webdriver