【问题标题】:How to handle selenium crashes如何处理硒崩溃
【发布时间】:2011-03-07 06:16:54
【问题描述】:
我目前正在使用 selenium RC 自动化测试,每小时运行一次。大部分时间一切都运行顺利,但有时 Firefox 会崩溃或 selenium RC 会挂起,并且由于这两个问题,测试无法继续并停止。有谁知道我如何使 firefox.exe 和/或 java.exe(selenium 实例)在它们崩溃或挂起时被杀死,以便可以恢复测试。我看到的问题是在 firefox 或 selenium 挂起时自动检测并通过脚本自动将其杀死。
谢谢!
【问题讨论】:
标签:
firefox
selenium
process
selenium-rc
kill
【解决方案1】:
理想情况下,您的每个测试都将从干净的状态开始,没有运行现有的 Firefox 或 IE 进程。在您的测试 tearDown() 方法中,您应该关闭/退出浏览器。即使使用这种方法,有时,杂散的进程仍然会潜入。如果您在 Windows 上通过 Java RC 运行 Selenium 服务器,则将此命令放在测试的 startUp() 方法中可以帮助确保没有浏览器/实例在运行:
Runtime.getRuntime().exec("TASKKILL /F /IM Firefox.exe");
Runtime.getRuntime().exec("TASKKILL /F /IM iexplore.exe");
就检测它们何时崩溃而言,Firefox 将显示一个警告对话框,指示崩溃。您可以通过外部工具(例如 AutoIT)以编程方式与此窗口进行交互,如果需要,它可以自动按下此对话框上的“确定”按钮。我发现构建一个在后台持续运行以处理弹出窗口、崩溃、警告等的外部 AutoIT 脚本非常有帮助。
【解决方案2】:
不确定我是否有最终的答案,但我可以提供一些想法:
- Selenium 将有一个超时来处理 Firefox 冻结。您应该仔细检查以确保设置正确且正常工作。
- 无论运行你的 selenium 的什么(如巡航控制或团队城市)也应该有一个超时,可以杀死 selenium 服务器。
- 人们通常会恢复为每天重新启动一次服务器并报告积极的结果。(不是我)
- 我真的鼓励您找出造成这种情况的根本原因。 Selenium 可能会让人感到沮丧和不稳定,但在深入研究之后,我一直发现这是一个可以修复的可诊断问题(如 this)。
(Se 将我们推向了可怕的极端:我们实际上编写了一个在 TeamCity 中触发的 ssh 作业,该作业登录到 Windows 机器并在那里重新启动了 selenium 服务器。最终我们没有使用它。)