簡體   English   中英

用mechanize-firefox轉到javascript鏈接

[英]going to a javascript link with mechanize-firefox

頁面上有一個鏈接,我想轉到它,但這只是一個javascript命令。 如何機械化鏈接?

<a href="javascript:__doPostBack(&#21;ctl54$cphMainContent$resultsGrid$ctl54$ctl25$ctl62$ctl13&#24;,&#56;&#56;)"><span>abc</span></a>

沒有頁面及其HTML和JS,只能猜測。 請注意, follow_link()方法不適用於JS鏈接。 下面的方法可以,但是沒有頁面我當然不能測試。

最好的選擇是將鏈接作為DOM對象獲得click方法

use WWW::Mechanize::Firefox;
# Get to your page with the link(s)
my $link = find_link_dom( text_regex => 'abc' );   # Or use find_all_links_dom()
$link->click();  
# $mech->click( { dom => $link } )  # works as well

還有texttext_contains相關選項(而不是text_regex ),以及許多其他選項。 請注意, click方法將在事件列表上等待返回。 例如,參見最近的這篇文章 這對於需要較長時間才能完成的頁面至關重要。

請參閱docs中的find_link_dom()click方法。 它們不是很詳細或示例很多,但確實提供了足夠的知識來解決它。

如果您需要審問鏈接,請使用find_all_links_dom() ,它以MozRepl::RemoteObject實例的形式MozRepl::RemoteObject Firefox DOM的數組或對該數組的引用(取決於上下文)。

my @links_dom = find_all_links_dom( text_contains => 'abc' );

# Example from docs for find_link_dom()
for my $ln (@links_dom) {
    print $ln->{innerHTML} . "\n"
}

請參閱MozRepl :: RemoteObject的頁面,以了解您可以使用它做什么。 如果只需要找出要單擊的鏈接,那么find_link_dom()的選項就足夠了。


僅對使用__doPostBack鏈接且鏈接中包含<span>的玩具頁面進行了測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM