如何处理硒崩溃

时间:2011-03-07 06:16:55

标签: firefox selenium process selenium-rc kill

我目前正在使用每小时运行的硒RC自动化测试。一切都运行顺利,但有时候火狐会崩溃或硒RC只会挂起,因为这两个问题,测试不会继续,而且会停滞不前。有谁知道如何使firefox.exe和/或java.exe(selenium实例)在崩溃或挂起时被杀死,因此测试可以恢复。我看到的问题是当firefox或selenium挂起时自动检测并自动通过脚本将其杀死。

谢谢!

2 个答案:

答案 0 :(得分:2)

理想情况下,每个测试都将从干净状态开始,没有运行现有的Firefox或IE进程。在您的测试tearDown()方法中,您应该关闭/退出浏览器。即使采用这种方法,有时候,杂散进程仍然可以进入。如果您在Windows上运行Selenium服务器,通过Java RC,将此命令放在测试的startUp()方法中可以帮助确保没有运行任何浏览器/实例: / p>

Runtime.getRuntime().exec("TASKKILL /F /IM Firefox.exe");
Runtime.getRuntime().exec("TASKKILL /F /IM iexplore.exe");

至于检测到它们何时崩溃,Firefox将显示一个警告对话框,指示崩溃。您可以通过外部工具(例如AutoIT)以编程方式与此窗口进行交互,如果需要,可以自动按下此对话框上的“确定”按钮。我发现构建一个在后台不断运行以处理弹出窗口,崩溃,警告等的外部AutoIT脚本非常有用。

答案 1 :(得分:1)

不确定我是否有最终答案,但我可以提供一些想法:

  • Selenium将有一个超时来处理Firefox冻结。您应仔细检查以确保设置正确并正常工作。
  • 无论运行什么硒(如巡航控制或团队城市),也应该有一个可以杀掉selenium服务器的超时。
  • 人们经常会每天重新启动一次服务器并报告正面结果。(不是我)
  • 我真的很鼓励你弄清楚这个的根本原因。 Selenium可能会感到沮丧和片状,但在挖掘之后,我总是发现这是一个可以解决的可诊断问题(如this)。

(Se推动我们走向可怕的极端:我们实际上写了一个在TeamCity中触发的ssh作业,登录到Windows机器并在那里重新启动了selenium服务器。最终我们没有使用它。)