【问题标题】:What are the limitations of mechanize? and what is the difference(s) between mechanize and watir机械化的局限是什么? mechanize 和 watir 之间有什么区别
【发布时间】:2011-11-02 16:28:13
【问题描述】:

我正在使用 mechanize 来废弃一些网页。

  • 我想知道什么是机械化限制?什么机械化不能做?
  • 它可以执行嵌入在网页中的javascripts吗?
  • 我可以用它来调用javascript函数吗?我不认为它可以。我觉得Watir可以。
  • 它和watir有什么区别?

【问题讨论】:

    标签: ruby mechanize watir watir-webdriver


    【解决方案1】:

    机械化可以做很多事情。它使用 net/http,所以无论你可以使用 net/http 做什么,你都可以使用 mechanize。尽管根据他们的描述它支持更多:

    Mechanize 库用于自动与网站交互。 Mechanize 自动存储和发送 cookie、跟踪重定向、可以跟踪链接和提交表单。可以填充和提交表单字段。 Mechanize 还会记录您访问过的网站作为历史记录。

    查看此链接以获取有关将 javascript 与 mechanize 结合使用的一些信息:here

    告诉您机械化是否支持特定功能/任务会更容易,而不是遍历所有内容。你到底想做什么?

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

    简单来说,Watir 确实支持 Javascript。实际上是你的浏览器支持javascript,而Watir控制着浏览器。

    Watir 运行一个真正的浏览器(FF、Chrome、IE)并以编程方式控制该浏览器。它的行为与用户访问网站时的行为完全相同。这使您能够使用 javascript。 Watir 仅控制浏览器,而浏览器是发送请求、获取响应并呈现/处理所有内容的浏览器。您受到所用浏览器速度的限制。

    另一方面,Mechanize 就像它自己的“浏览器”一样,比 Watir 快得多,因为它不呈现页面。它直接与服务器对话,并处理原始响应。机械化受限于您的连接速度。

    当您需要观察和查看正在发生的事情、使用 javascript 或做任何与 GUI 相关的事情时,Watir 将用于 Mechanize。机械化速度更快,有利于测试网站的实际结构。 (测试链接/登录/等)

    【讨论】:

    • 技术上,Watir 只支持 IE。要做FireFox(当前版本)、Chrome、Opera,或者无头操作,需要使用Watir-Webdriver。 (相同的基本 Watir API,但使用 webdriver 来控制浏览器)还有一个 .execute_script 方法,但它通常不受欢迎,因为这不是用户可以做的事情,但在某些情况下,它是解决复杂事件的最简单方法驱动控制
    • watir 可以在没有“显示”的情况下在 linux 服务器上工作吗?没有操作系统显示怎么打开浏览器?
    • 你需要无头,我从未尝试过,也不知道该怎么做。或许可以看看 Mechanize gem。
    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多