如何在OS X上使用脚本远程控制Firefox

5

我需要编写一些脚本来访问一些网站。从命令行运行的脚本将获取一些页面,提交一些表单,屏幕抓取一些信息等。

它不能真正像libwww-perl那样成为一个库“浏览器”,因为某些步骤可能需要用户交互(验证码仅使用Ajax的表单,任何交互惊喜等)。

我能想到的最实用的方法是远程在Firefox中打开一个选项卡,并向其中注入JavaScript代码,类似于GreasemonkeySelenium所做的事情。如果更容易的话,它不一定非得是Firefox,可以是其他浏览器。

那么最好的方法是什么?

4个回答

3

你考虑过使用Selenium远程控制吗?我以前使用过这个工具来自动化浏览器交互,效果非常好,提供了很多灵活性。

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


2
你可以使用XPCOM以各种想象得到的方式扩展Firefox。你可以编写某种接口,可能连接另一个进程。

1

我不确定做这件事的“最佳”方式是什么,但一个可能的方法是使用AppleScript。然而,Firefox没有广泛的脚本功能 - 如果您愿意使用Safari,则可以使用一个可用的AppleScript命令将JavaScript代码注入文档中(do JavaScript命令 - 从Script Editor中可用的Safari脚本字典中查找)。

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

osascript path/to/script.scpt

我能否从一些更常见的语言(如Ruby、Perl或Python)发送Applescrit命令? - taw
当然可以,只要您能够使用所选择的编程语言来执行系统命令。例如,在Python中,您可以使用以下类似的代码:os.system('osascript -e "<command 1>" -e "<command 2>" -e "<and so on…>"') - hbw

0

在 OS X 上编写脚本有两种方法我会推荐,它们都是用 Ruby 编写的。第一种是 Watir,这是一个自动化测试框架,可以控制 Mac OS X 上的 Firefox 和 Safari。

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

在后台,Watir 使用 JSSh - a TCP/IP JavaScript Shell Server for Firefox 来实现。JSSH 允许您从 telnet 会话中控制浏览器。

无论您选择哪种方式,如果有验证码,它们都会阻止您。这似乎是它们的全部意义 :-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接