免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 15934 | 回复: 11
打印 上一主题 下一主题

【WWW::Mechanize 模块用例】用程序自动填写网页表单--增加注释了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-14 16:43 |只看该作者 |倒序浏览
这两天在研究cacti软件,因为它本身没有提供用脚本批量增加设备的接口,所以我在cacti的坛子里边翻出了有人用WWW::Mechanize这个模块,自己就用了一下,还真不错。
对付一些web申请,挺好的。以极快的速度增加了上百个监控项。挺爽的也


#!/usr/bin/perl
use strict;
use WWW::Mechanize;
use Data::Dumper;
my $CACTIURL = "http://172.23.16.20/cacti/";
my $ADMINPASSWORD = "test";

#打开浏览器
my $mech = WWW::Mechanize->new();

#输入网址
$mech->get($CACTIURL);
#输入用户名密码
$mech->set_visible("admin", $ADMINPASSWORD);

#点击登陆
$mech->click;
#点击Devices连接,查看hosts列表
$mech->follow_link(text => "Devices");
#找到所有包含host.php?action=edit&id=的连接
my @links = $mech->find_all_links(url_regex => qr /host.php\?action=edit&id=/);
#依次打开每个连接的目的页面作处理
foreach my $i (@links) {


#打开连接
        $mech->get($i);
#再链接到Create Graphs for this Host指向的页面
        $mech->follow_link(text => "Create Graphs for this Host");
#选中页面内的第二个form

        $mech->form_number(2);
#得到第二个form所有的域
        my @inputs = $mech->current_form()->inputs();
        my $submitbutton;

#依次处理field类型为checkbox的,并且checkbox的name含有特定字串名字的每个域
        foreach my $input (@inputs) {
                if ($input->type eq "checkbox" && $input->name =~ /[sc]g_48/) {

#给符合条件的checkbox打勾
                        $mech->tick($input->name, "on");
                }

#找到最后一格submit的field,是一张图片的
                $submitbutton = $input if ($input->type eq "image"); # get the last one
        }
#点击那张图片,提交form,进入下一个页面
        $mech->click_button(input => $submitbutton);
#选中第一个form
        $mech->form_number(1);
#得到form所有的域
        @inputs = $mech->current_form()->inputs();
        foreach my $input (@inputs) {
                print $input->name.': '.$input->type."\n";
                if ($input->type eq "text") {
                        print "in text:".$input->name.': '.$input->type."\n";

#输入"Monitor"字符串
                        $mech->field($input->name, "MONITOR");
                }
                $submitbutton = $input if ($input->type eq "image"); # get the last one
       }

#提交form
        $mech->click_button(input => $submitbutton);
        # final create
}



[ 本帖最后由 flw 于 2007-9-17 13:35 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-09-14 16:46 |只看该作者
修改下就能自动抢沙发了:>

论坛徽章:
0
3 [报告]
发表于 2007-09-14 19:32 |只看该作者
支持!!!!
有注解就好了

论坛徽章:
0
4 [报告]
发表于 2007-09-17 13:29 |只看该作者
好想让加精啊!

论坛徽章:
0
5 [报告]
发表于 2007-09-17 13:45 |只看该作者
顶起来!学习了...

论坛徽章:
0
6 [报告]
发表于 2008-07-28 17:08 |只看该作者
这个能看到浏览器的动作么?
我运行了一遍  浏览器都没有弹出来 没有任何的反应啊   
有用过的朋友说说有什么效果啊  能否看到浏览器的行为

论坛徽章:
0
7 [报告]
发表于 2008-07-29 11:38 |只看该作者
为什么我在用www::mechanize这个模块时,会出现如下错误:
Can't locate object method "set_visible" via package "WWW::Mechanize" at C:\Docu
ments and Settings\yangdq\桌面\aa.pl line 13.

论坛徽章:
0
8 [报告]
发表于 2008-08-13 10:02 |只看该作者
强悍啊

论坛徽章:
0
9 [报告]
发表于 2008-09-10 19:35 |只看该作者
不会 javascript
全用 javascript 生成的链接怎么搞定?

论坛徽章:
0
10 [报告]
发表于 2008-09-11 09:17 |只看该作者
看了 Mechanize 的 FAQ , 用javascript 的网页是歇菜了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP