繁体   English   中英

以下链接使用WWW :: Mechanize

[英]Following links using WWW::Mechanize

我正在尝试访问内部网页以使用WWW :: Mechanize启动和停止应用程序。 到目前为止,我已经能够成功登录该应用程序。 我的下一个操作项是从服务列表中识别特定服务并停止它们。

我面临的问题是我无法点击网页上的链接。 查看HTML和链接对象后,很明显没有URL,而是单击事件。

这是HTML的代码段

<ul>
<li>
<a href="#" id="j_id_id1:j_id_id9:2:j_id_id10" name="j_id_id1:j_id_id9:2:j_id_id10" onclick="A4J.AJAX.Submit('j_id_id1',event,{'similarityGroupingId':'j_id_id1:j_id_id9:2:j_id_id10','parameters':{'j_id_id1:j_id_id9:2:j_id_id10':'j_id_id1:j_id_id9:2:j_id_id10','ajaxSingle':'j_id_id1:j_id_id9:2:j_id_id10'} ,'containerId':'j_id_id0'} );return false;" style="color:#3BB9FF;">servicename</a>
</li>
</ul>

链接对象转储为

$VAR1 = \bless( [
                   '#',
                   'servicename',
                   'j_id_id1:j_id_id9:2:j_id_id10',
                   'a',
                   bless( do{\(my $o = 'http://blah.services.jsf')}, 'URI::http' ),
                   {
                     'href' => '#',
                     'style' => 'color:#3BB9FF;',
                     'name' => 'j_id_id1:j_id_id9:2:j_id_id10',
                     'onclick' => 'A4J.AJAX.Submit(\'j_id_id1\',event,{\'similarityGroupingId\':\'j_id_id1:j_id_id9:2:j_id_id10\',\'parameters\':{\'j_id_id1:j_id_id9:2:j_id_id10\':\'j_id_id1:j_id_id9:2:j_id_id10\',\'ajaxSingle\':\'j_id_id1:j_id_id9:2:j_id_id10\'} ,\'containerId\':\'j_id_id0\',\'actionUrl\':\'/pages/services.jsf;jsessionid=NghBSoEJZKXbWcK0uVzcHvyebl8G_zSpf_Zu4uqrLI7xosHAnheK!1108773228\'} );return false;',
                     'id' => 'j_id_id1:j_id_id9:2:j_id_id10'
                   }
                 ], 'WWW::Mechanize::Link' );

到目前为止,这是我的代码:

#!/usr/bin/perl
use strict;
use warnings; 
use Data::Dumper;
use WWW::Mechanize;            

my $username = 'myuser'; 
my $password = 'mypass';
my $url      = 'myinternalurl';

my $mech = WWW::Mechanize->new();
$mech->credentials($username,$password);
$mech->get($url);
my $link = $mech->find_link( text => 'servicename' );
#print Dumper \$link;
#$mech->follow_link( url => $link->url_abs() );
$mech->get($link->url_abs());
print $mech->text();

如果使用follow_link ,则Link not found at log_in.pl line 16. 如果我使用get那么我将返回同一页面。 问题是所有这些服务似乎都是超链接,但具有与我的主URL相同的URL。

这是网页的图片:

在此处输入图片说明

当我手动单击服务时,“操作和属性”部分会更改,这使用户可以查看他们刚刚单击的服务的“操作和属性”。 每个服务都有不同的操作和属性集。

我应该如何使用perl做到这一点? WWW ::为此机械化了错误的工具吗? 任何人都可以提出建议的解决方案或替代的Perl模块来提供帮助。 安装任何CPAN模块都不是问题。 使用最新版本的perl也不是问题。 我刚刚开始使用perl进行自动化,目前还不知道所有可以完成工作的模块。

期待您的指导和帮助。

注意:如果您有任何相关信息,我可能已经错过了,请发表评论,我将更新问题以添加更多详细信息。 我已经修改了专有信息。

该按钮包含一个Javascript onclick事件,在使用WWW::Mechanize时将不起作用。

根据文档:

请注意,Mech不支持JavaScript,您需要其他软件。 WWW::Mechanize::FAQ查看“ JavaScript”以获取更多信息。

WWW::Mechanize::Firefox支持一种形式的Java WWW::Mechanize::Firefox

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM