我正在使用机械化来取消一些网页。机械化的局限性是什么?机械化和watir之间有什么区别
- 我需要知道什么是机械化限制?什么机械化不能做?
- 它可以执行嵌入在网页中的javascripts吗?
- 我可以用它来调用JavaScript函数吗?我不认为它可以。我认为Watir可以。
- 它和watir有什么不同?
我正在使用机械化来取消一些网页。机械化的局限性是什么?机械化和watir之间有什么区别
机械化可以做很多事情。它使用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。机械化速度更快,对于测试网站的实际结构非常有用。 (测试链接/登录/等)
技术上,Watir只支持IE。要做FireFox(当前版本),Chrome,Opera或无人操作,您需要使用Watir-Webdriver。 (相同的基本Watir API,但使用webdriver来控制浏览器)还有一个.execute_script方法,但它通常被忽视,因为这不是用户可以做的事情,但在某些情况下,它是围绕复杂事件的最简单方法驱动控制 –
可以在没有“显示”的情况下在linux服务器上工作吗?如何在没有OS显示的情况下打开浏览器? –
你需要去无头,我从来没有尝试过,也不知道如何去做。也许看看机械宝石吧。 –