用Win32::IEAutomation与HttpWatch自动分析页面返回时间
做web开发,在windows上使用HttpWatch的场景比较多。统计页面返回时间是其中一个,如果是重复性的工作的话。HttpWatch本身提供了Automation的功能。httpwatch提供标准的COM组件,可用多种语言操作。官方安装包里提供了c#/js/ruby/vbs的示例。并且使用ruby的时候可以配合watir自动化测试工具来工作,比较方便。但安装watir未成功,ruby1.8报找不到包的错误,ruby1.9报找不到dll的错误。不熟悉ruby,于是放弃。
在cpan中找到Win32::Watir但安装出错,又找到相关的Win32::IEAutomation,使用cpan安装成功。 现在ActivePerl也支持cpan安装,第一次使用的时候会自动下载编译器以及dmake。其实像watir以及Win32::IEAutomation都可以看成是语法糖,直接通过COM自行创建IE的实例,再用DOM语法来玩也是一样的,但有了这些工具会方便很多。
配置完环境后上demo,代码参照HttpWatch自带的js的demo以及Win32::IEAutomation的demo.
#!/usr/bin/perl use strict; use warnings; use Win32::OLE; use Win32::IEAutomation; my $control = Win32::OLE->new('HttpWatch.Controller') or die "failed to create httpwatch"; my $ie = Win32::IEAutomation->new( visible => 1, maximize => 1); my $plugin = $control->Attach($ie->getAgent()); $plugin->Record(); $ie->gotoURL('http://www.baidu.com'); $ie->getTextBox('name:', "wd")->SetValue("大美女"); $ie->getButton('caption:', "百度一下")->Click; $control->Wait($plugin, -1); $plugin->Stop(); my $summary = $plugin->Log->Entries->Summary; print "Total time to load page (secs): " . $summary->Time . "\n";
上面这个demo是直接完成了一次百度的搜索。在实际工作中可以模拟登录,发表文章等。统计多次访问的平均值来评估页面速度或其它项目。HttpWatch自带的帮助文档对于各个对象的方法及属性有详细说明。