2012-12-14 56 views
3

我有一个用例,我需要在网站中填写表单,但无法访问API。目前我们正在使用webdriver和浏览器,但由于这个过程是异步的,所以它变得非常沉重,而且不是傻瓜。有没有什么办法可以在没有浏览器的情况下做到这一点,并通过密切监视待处理的请求来使进程同步?导航工具没有浏览器,重量轻和防故障

Casperjs和htmlunitdriver似乎是我拥有的一些最好的选择。有人可以解释维护,防故障,重量轻的优点或缺点。

我需要导航复杂和许多不同类型的网页。我想浏览的一些网页很受JS驱动。

Scrapy可以用于此目的吗?

+2

也许[PhantomJS](http://phantomjs.org/)可能会帮助,可能与[CasperJS](http://casperjs.org/) – tcovo

回答

2

那么,我一直在用很多不同的方式来做到这一点,这取决于你希望系统如何智能化/高级化。我使用红宝石,使用红宝石很容易。下面是我发现的最有用的上市(原因很红宝石偏颇的)方法:

  • 机械化found here):超轻,超快速,超可靠。它处理浏览器所做的一切,除了JS。底层是一个open-uri +一个XML解析器,顶层有很好的界面层,还有一点额外的香料。检查文档中的教程。我认为它也适用于像Python和其他的东西。
  • Poltergeistfound here):快速,真实的浏览器行为,相当可靠和重量轻,支持JS。在引擎盖下,它是一个幻像js驱动的水豚浏览器(但没有所有讨厌的依赖关系,并且完全无头)。尽管它可以用来测试rspec,它很容易以其他方式使用,或者单独使用,只是搜索谷歌。
  • Watir-webdriverfound here):一个超级强大的库,用于驱动REAL浏览器,如Firefox,IE浏览器,Chrome浏览器或Safari浏览器。它实际上非常稳定。但是,如果您没有附加真实物理屏幕(例如,在服务器上),则需要运行xvfb,并将浏览器的输出映射到它。这可以很容易与无头的宝石来完成,换句话说也提到here

因此,如果您不需要JS的支持,去与机械化。

+0

我想导航许多类型的网页,我期待需要javascript。如果不支持javascript,我们不会做很多操作吗?选择下拉菜单或点击按钮都将需要javascript,不是吗? – raju

+0

没有不在!这是非常重要的理解!正则的html表单,链接按钮等不是由JS驱动的。您可以通过在浏览器中停用JS来确定您想要执行的操作是否由JS驱动,然后在浏览器中测试您想要执行的操作。 –

+0

你在BTW中使用哪种编程语言? –

5

使用Htmlunitdriver。为了使它失败证明您将不得不作出一些相应的change.But它将工作没有浏览器。