做Web脚本/ Web宏的最佳方法是什么?
我正在尝试简化工作场所的某些任务,而且似乎很多开发人员的时间都花在了网络上的半机械任务上(特别是编辑使用基于Web界面的在线商店) )。因此,我一直在研究一些解决方案,这些解决方案可以通过脚本完成这些任务,因为我认为这样做可以为我们节省大量时间。因此,在我真正开始研究其中任何一个之前,我只是想知道Stack Overflow社区是否对哪种Web脚本/宏解决方案是最好的有任何建议。
要求如下:
- 必须能够与Web表单进行交互(不仅仅是下载页面和抓取文件-脚本必须在Web表单中编辑控件,然后提交该表单)
- 我们必须编辑的表单是安全的表单,因此脚本解决方案必须能够处理该问题(即,如果人类不得不坐在那里观看并手动重新放置,那么拥有强大的脚本解决方案对我们来说是没有用的-每隔几分钟登录一次)
- 如果它可以读取本地文件并对它们进行一些基本的字符串替换/操作,那将是非常,非常,非常可取的(例如,最好在文本文件中包含变量列表或者一些HTML代码,然后再编写脚本)将代码" STORENAME"替换为特定商店的名称,然后再将代码插入表单)
到目前为止,以下是我备受关注的脚本解决方案(尽管我曾与Chickenfoot合作,但我并未真正研究过其中的任何脚本):
- 鸡脚
- 适用于Firefox的iMacros
- libwww-perl
- unix和C的libwww(在为perl搜索libwww时遇到了这个问题,直到现在我还不知道存在)
- 更"通用"的宏解决方案,例如AutoHotKey
Stack Overflow上的任何人都尝试过这些解决方案吗?如果是这样,我们喜欢或者不喜欢它们什么?谁能推荐一个不在名单上的人? (这绝不是排他的或者详尽的列表)。我真的很想自动化我们的许多机械过程,并希望Stack Overflow社区可以帮助我们,以便我们可以避免工作中很多令人费解的事情:)。
编辑:回复:平台我们主要使用WindowsXP终端,但是1)我们确实有几台Mac测试PC,因此OS X是一个可行的选择,以及2)如果这意味着要自动化很多这些任务,我将如果需要,请构建一个Linux机器。因此,平台几乎不是问题。
解决方案
回答
我真的很喜欢watir框架(在ruby上运行)-可编程,简单,使用IE来自动化Web(这样我们就可以获得真正的浏览器行为)。当然,它仅是Windows-我们没有指定是否使用它。
我们已经使用了watir来自动化对Webapp的测试,我们对此感到非常满意。
回答
@Asaf Bartov,实际上,Watir不仅是Windows。还有适用于Windows,Linux和Mac的FireWatir,以及适用于Mac的SafariWatir。
http://wtr.rubyforge.org/
http://wiki.openqa.org/display/WTR/FireWatir
http://safariwatir.rubyforge.org/
回答
一些建议:
- 编写Firefox扩展
- 编写一个Greasemonkey脚本
- 编写一个无处不在的脚本
编辑:我假设它们将在包含我们要提交到表单的数据的网页上起作用。
回答
如果我们使用的是libwww-perl,请不要就此停止。使用WWW :: Mechanize,它是LWP的包装,可以完成我们想要的浏览器交互。缺点:它还不能处理JavaScript。
WWW ::机械化主页
回答
我实际上是Chickenfoot的忠实拥护者,最近我开始大量使用它来为另一个Firefox扩展Zotero提供脚本功能。
回答
另一种选择是使用AutoIT + Firefox + mozrepl + FF.au3. 由于AutoIT在浏览器之外运行(它本身是一种出色的自动化工具),因此功能强大,因此我们可以提交多个浏览器表单而不会丢失上下文。然后,FF.au3脚本使我们可以通过AutoIT3简单地控制Firefox。
回答
我们使用我们提到的iMacros工具取得了成功:
Firefox + iMacros
请注意,它也是免费的IE插件!这样做的好处是,两个浏览器都可以使用完全相同的宏。恕我直言,对于快速轻松地进行Web测试和常规Web自动化非常有用。
提姆
回答
使用:
Firefox + iMacros获取:
转到我们喜欢的页面(例如yahoo.com),使iMacro成为焦点,点击记录并搜索
一些文字。显示第一页时,将页面保存在文件中。
现在我们有了想要的页面。
至此,我们已经完成了获取操作。
保存宏并为其命名。
下次我们可以运行刚刚保存的宏。
然后,我们可以使用以下代码清理获得的html代码:
# this is php, do the proper thing in the language of your choice # one or more spaces is equal to one space, remove tab, return ...etc. return ereg_replace(' +', ' ', trim(preg_replace("/(\r\n|\r|\t|\n|\'|\")/s", '', $string)
现在,我们将获得一个干净的html页面,其中包含一行,一行很长。
现在,我们可以使用regEx随意剪切和切片。
要知道的事情:
如果需要完全自动化,则可以通过cronjob(命令行)在firefox中启动宏。
回答
我对IMacros的印象是我们需要付费才能解锁很多东西,所以我选择了Chickenfoot。不幸的是,Chickenfoot邮件列表最近非常安静,因此对其未来不抱有信心...
回答
我正在使用iMacro / .net进行数据提取项目。我喜欢iMacros的脚本编写简易性,这一点很重要,因为该应用程序最多可以从60多个网站中提取数据。对于此项目,运行iMacros的间接费用值得节省的开发时间。这不是理想的解决方案,但是它是与另一个网站的数据进行交互的一种方式,前提是它们没有提供适当的接口。整洁的地方是,我创建了一个由iMacros scraper组成的小型服务器集群,以帮助分配负载。现在,用户可以通过网站访问临时请求的应用程序服务器,但最终我希望它发展成为更加流畅的产品线。
回答
我是硒的忠实粉丝
http://www.seleniumhq.com
尽管可以通过脚本支持(多种语言)来设计来处理自动化的浏览器测试,但是我们可以设计宏模板,这些模板将根据变量填写表格等
还:有人知道可以与Flash一起使用的好宏吗?似乎javascript无法跨越那条线
回答
Firefox的iMacros是免费的,这就是我们所需要的!它可以自动执行任何浏览器活动,并且可以正常工作!它也可以读/写外部数据填写表格,等等。我是这个Firefox添加组件的忠实支持者!