簡體   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