转到mechanize firefox的javascript链接



页面上有一个链接,我想转到它,但它只是一个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链接。下面的方法确实如此,但我当然不能在没有页面的情况下进行测试。

可能最好的选择是将链接作为click方法的DOM对象

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方法将在返回之前等待事件列表。例如,请参阅最近的这篇文章。这对于需要更长时间才能完成的页面至关重要。

有关find_link_dom()click方法,请参阅文档。它们没有非常详细或丰富的例子,但确实提供了足够的例子来处理和弄清楚。

如果您需要查询链接,请使用find_all_links_dom(),它将返回一个数组或对Firefox DOM的数组的引用(取决于上下文)作为MozRepl::RemoteObject实例。

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>

最新更新