2011-11-02 40 views

回答

13

机械化可以做很多事情。它使用net/http,所以无论你使用net/http可以做什么,都可以通过机械化来完成。虽然它支持更多按照他们的描述:

机械化库用于自动化与网站的交互。机械化会自动存储和发送Cookie,遵循重定向,可以跟随链接并提交表单。表单域可以被填充和提交。机械化还会跟踪您作为历史访问的网站。

退房此链接的使用JavaScript和机械化的一些信息:here

这将是更容易告诉你,如果机械化支持,而不是通过一切顺利特定功能/任务。你想要做什么?

JavaScript是机械化不能做的一件事。它支持大部分时间的一件事是显示Javascript链接。即使用page.links.each {|link| puts link.text}也将显示Javascript,但您将无法点击/选择它们。

简而言之,Watir确实支持Javascript。它实际上是支持javascript和Watir控制浏览器的浏览器。

Watir运行一个真正的浏览器(FF,Chrome,IE)并以编程方式控制该浏览器。它的行为与用户在访问网站时完全相同。这是什么让你使用JavaScript。 Watir只控制浏览器,浏览器是发送请求并获取响应并渲染/处理的浏览器。您受限于您使用的浏览器的速度。

机械化另一方面就像它自己的'浏览器'一样,比Watir快得多,因为它不会呈现页面。它直接与服务器通信,并处理原始响应。机械化受到连接速度的限制。

当您需要观察并查看发生了什么,使用javascript或执行任何GUI相关操作时,Watir将用于Mechanize。机械化速度更快,对于测试网站的实际结构非常有用。 (测试链接/登录/等)

+1

技术上,Watir只支持IE。要做FireFox(当前版本),Chrome,Opera或无人操作,您需要使用Watir-Webdriver。 (相同的基本Watir API,但使用webdriver来控制浏览器)还有一个.execute_script方法,但它通常被忽视,因为这不是用户可以做的事情,但在某些情况下,它是围绕复杂事件的最简单方法驱动控制 –

+1

可以在没有“显示”的情况下在linux服务器上工作吗?如何在没有OS显示的情况下打开浏览器? –

+1

你需要去无头,我从来没有尝试过,也不知道如何去做。也许看看机械宝石吧。 –