2014-02-05 42 views
1

我在C#中运行Firefox和Selenium的最新版本。我正在自动执行抓取工具以在网络应用程序中查找数据。服务器超级慢,所以我不得不添加许多等待,并使用线程休眠进行初始等待。为什么Selenium + Firefox在加载页面时会冻结?

所以我的爬虫获取项目列表,然后迭代:它必须通过单击其ID来加载每个项目的细节。然后返回(这些导航控件都内置到Web应用程序中,不使用浏览器控件),冲洗并重复。服务器在加载细节并返回时显示进度微调器。抓取工具每次到达相同的项目并锁定,例如:进度微调器冻结并且Firefox崩溃。

我已经尝试了几种不同的东西,包括使用后台线程,删除所有的cookie,以及检查我的内存是否超载。我没有注意到内存中有任何峰值(在任务管理器中)。我也尝试重新启动网络驱动程序,但它不能很好地工作,因为这是一个Web应用程序。

有什么我可以忽略? (我试图尽可能清晰和详细)

忘了提及,当我停止程序页面'unfreezes',我可以继续使用这一点。

+0

如果它不太AJAX和JavaScript很重,你可以看看PhantomJS来加速它。 – Arran

+0

速度不是问题,如果我没有添加睡眠来为显式等待添加初始延迟,那么服务器只是在页面没有完成加载并且找不到元素时给我一个错误页面。另外,它是用js和AJAX编写的。 –

+0

原来,由于某些原因,Firefox似乎这样做,但IE浏览器很好。我将与IE一起工作,但我仍然对Firefox为何失败感到好奇。 –

回答

3

这是C#selenium web绑定2.39及更早版本中的一个已知问题。现在应该在2.40中修正。问题是在重定向来自firefox的控制台日志记录时,在Web绑定代码中发生死锁。如果你升级到2.40,它应该解决它。有关更多信息,请参阅here,标题为“2014年2月25日更新”。

+0

我还没有测试过这个,因为我已经从使用Selenium切换到使用WebBrowser控件,但它看起来像一个合理的解释,谢谢。 –

相关问题