这个问题最初是在 Stackoverflow 上提出的,但后来我认为它可能更适合 Serverfault,所以我把它移到了这里。
我正在尝试通过将一些 Jenkins 项目移至从属节点来重新安排它们。我的问题是,同一个项目在主节点上执行时运行良好,但在我尝试将其移动到的从属节点上却失败并出现神秘错误。问题不在于 Jenkins 本身,因为我在 shell 中手动运行此操作时得到了相同的结果。
我在从属设备上得到的错误是:
PHPUnit_Extensions_Selenium2TestCase_Exception:当前没有活动会话来执行“url”命令。您可能试图在 setUp() 中设置一些选项,但结果不正确 等设置器名称。您可以考虑改用 setUpPage()。
这通常表明代码正确,但完全相同的项目在主节点上没有错误,并且测试成功运行。
到目前为止我已经尝试过:
- 将从节点上的 PHPUnit 版本更改为主节点上使用的版本(主节点上为 4.4.1,从节点上为 4.5.0)。没有成功,它仍然在主节点上构建并在从节点上失败,并产生相同的错误。
- 两台机器的 PHP5 配置文件不同。没有明显差异。
请注意,我并没有编写测试,我只是接管了 Jenkins 集群的维护工作。环境中一定有一些技巧导致了差异,但我无法缩小范围。使用 --verbose 或 --debug 运行 phpunit 也无济于事。
答案1
幸运的是,我设法找到了解决方案。原来是从服务器没有安装互联网浏览器。aptitude install iceweasel
然后重新启动 Selenium 服务器就解决了问题 - 现在测试运行顺利。
如此简单,却又如此令人沮丧。希望这能为遇到类似问题的人节省宝贵的时间。