【问题标题】:How to remotely control Firefox from a script on OS X如何从 OS X 上的脚本远程控制 Firefox
【发布时间】:2010-10-19 06:45:21
【问题描述】:

我需要编写一些访问某些网站的脚本。来自命令行的脚本会获取一些页面、发布一些表单、屏幕抓取一些信息等。

它不可能是真正像 libwww-perl 这样的库“浏览器”,因为某些步骤可能需要用户交互(CAPTCHAsAjax-only 表单、任何交互意外等) .

我能想到的最实用的方法是在 Firefox 中远程打开一个选项卡,然后将 JavaScript 代码注入其中,有点像 GreasemonkeySelenium 所做的。不一定非要针对 Firefox,如果这样更容易,也可以是其他浏览器。

那么最好的方法是什么?

【问题讨论】:

    标签: firefox browser-automation


    【解决方案1】:

    你考虑过Selenium Remote Control吗?我之前使用该工具进行了自动浏览器交互,并且效果很好,提供了很大的灵活性

    根据您的具体需求,您或许可以利用 Selenium IDE,这是一个易于使用的 Firefox 插件,可以轻松编写脚本。

    【讨论】:

      【解决方案2】:

      您可以使用XPCOM 以各种可以想象的方式扩展 Firefox。您可以编写某种与另一个进程连接的接口。

      【讨论】:

        【解决方案3】:

        我不确定“最好”的方法是什么,但一种可能性是使用 AppleScript 来完成这项工作。然而,Firefox 没有广泛的脚本功能——如果你愿意使用 Safari,可以使用 AppleScript 命令将 JavaScript 代码注入文档(do JavaScript 命令——在 Safari 的脚本字典中查找它,可从在脚本编辑器中)。

        另外,为了从命令行运行 AppleScripts,请使用 osascript:

        osascript path/to/script.scpt
        

        【讨论】:

        • 我可以使用一些更常用的语言(如 Ruby、Perl 或 Python)发送 Applescrit 命令吗?
        • 当然——只要您可以从您选择的语言中执行系统命令。例如,在 Python 中,您可以使用类似: os.system('osascript -e "" -e "" -e ""')
        【解决方案4】:

        要在 OS X 上编写脚本,我推荐两种方法,它们都使用 ruby​​。第一个是Watir,它是一个自动化测试框架,可以控制 Mac os x 上的 firefox 和 safari。

        另一种可能更好的屏幕抓取方法是使用hpricot,这是一个非常易于使用的 html 解析器。

        在后台,Watir 使用JSSh - a TCP/IP JavaScript Shell Server for Firefox 来执行此操作。 JSSH 允许您通过 telnet 会话控制浏览器。

        无论你走哪条路,如果有追捕者,他们都会阻止你。这就是他们的重点:-)

        【讨论】:

          猜你喜欢
          • 2011-10-30
          • 1970-01-01
          • 1970-01-01
          • 2013-01-06
          • 1970-01-01
          • 2016-03-11
          • 1970-01-01
          • 2018-01-08
          • 1970-01-01
          相关资源
          最近更新 更多