硒-";Firefox已经在运行了;错误

硒-";Firefox已经在运行了;错误,firefox,testing,selenium,Firefox,Testing,Selenium,我们正在使用selenium运行一些测试。我们有专门的Windows XP虚拟机,每个虚拟机上有一个selenium RC服务器,没有其他进程在该虚拟机上运行。我们为每个测试打开和关闭selenium会话。测试完成后总是调用selenium.stop()。很多时候(我想是30分之一)一个测试挂起,当我查看分配给它的机器的桌面时,我看到一个弹出窗口,“Firefox已经在运行,但没有响应。要打开一个新窗口,你必须先关闭现有的Firefox进程,或者重新启动你的系统。” 我相信只有一个测试可以沟通

我们正在使用selenium运行一些测试。我们有专门的Windows XP虚拟机,每个虚拟机上有一个selenium RC服务器,没有其他进程在该虚拟机上运行。我们为每个测试打开和关闭selenium会话。测试完成后总是调用selenium.stop()。很多时候(我想是30分之一)一个测试挂起,当我查看分配给它的机器的桌面时,我看到一个弹出窗口,“Firefox已经在运行,但没有响应。要打开一个新窗口,你必须先关闭现有的Firefox进程,或者重新启动你的系统。”

  • 我相信只有一个测试可以沟通 在给定时间使用VM
  • 所有测试都确保在完成后停止()
  • 我们有非常详细的日志记录,并且 日志显示没有测试有任何错误 测试前的问题导致了 “firefox已在运行”错误
  • 获取此错误的测试是 武断,因为它发生在正确的地方 调用selenium.start()和 因此,这不是由任何特定的原因造成的 代码
  • 所有测试的拆卸都是相同的

是什么导致了这种情况,我该如何防止这种情况?

当Selenium运行集成测试时,它实际上是在为每个测试启动一个新的Firefox副本。如果一个测试被卡住,并且有一个Firefox的现有副本使用相同的配置文件运行,它将无法启动下一个。(这是Firefox的限制,不是Selenium限制。)您应该确保:

  • 您的拆卸方法是每次使用
    Selenium关闭浏览器。停止
  • 您可以使用超时和
    WaitFor*()
    方法来限制测试执行其指令所需的时间
  • 您正在使用一个单独的配置文件来运行Selenium(如果您没有更改任何设置,您应该自动获得该配置文件),这与机器上可能已经存在的任何其他Firefox配置文件不同

也许可以尝试将环境变量
MOZ\u NO\u REMOTE
设置为1(或使用
-NO REMOTE
开关)。

我们发现,在我们的案例中,这与selenium完全无关-firefox本身遇到了问题,因为它在CPU和\或RAM不足的机器上运行。我们升级了虚拟机(例如增加了更多的RAM和CPU),问题几乎完全解决了

我想你是说硒。停下来,不是吗?另外,我正在积极地监控测试-它正在调用stop(),它不会延迟,正如您所说的,我希望indees因为除了selenium之外没有任何东西在该机器上运行,所以该机器上没有其他firefox配置文件。rry,是的,我的意思是
stop()
。另外,你能描述一下正在发生的事情的生命周期吗?每一个新的测试炸弹都是这样,还是只有在某些测试之后才会这样?在什么情况下会发生这种情况?这在Windows虚拟机上吗?(编辑您的原始问题,以便人们能够提供帮助。)我尽可能地编辑了我的问题,请告诉我是否还有遗漏的数据。另外,我认为这使得你目前的答案变得无关紧要(因为你所建议的场景是不可能的)其他问题:是同一个测试一直导致问题,还是不同的测试?这个测试在做什么(你能粘贴代码吗)?它是否做了一些不寻常的或与其他测试不同的事情?此测试的拆卸设置是否有不同或不寻常之处?听起来很有趣。你能详细解释一下为什么这样可以解决这个错误吗?老实说,我不知道为什么这样做有效——只是它在过去为我解决了同样的问题。MozillaZine知识库上的这个页面似乎是解决这个问题的最有用的页面:Firefox没有启动,因为已经有一个实例使用相同的配置文件运行,此选项强制ff使用新配置文件启动新进程。尽管我有6 GB的RAM和闲置的四核CPU,但我仍会遇到相同的错误。@Damian Nowak-如果firefox打开得太快,没有足够的时间删除selenium创建的临时配置文件,也可能会发生这种情况。。。这是我唯一的猜测。。。