使用 mechanize-firefox 去 javascript link
going to a javascript link with mechanize-firefox
页面上有一个 link,我想转到它,但它只是一个 javascript 命令。我如何使用 mechanize 去 link?
<a href="javascript:__doPostBack(ctl54$cphMainContent$resultsGrid$ctl54$ctl25$ctl62$ctl13,88)"><span>abc</span></a>
没有页面及其 HTML 和 JS,只能猜测。请注意,follow_link()
方法不适用于 JS links。下面的方法可以,当然没有页面我不能测试。
可能最好的选择是将 link(s) 作为 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
还有 text
和 text_contains
相关选项(而不是 text_regex
),以及其他一些选项。请注意,click
方法将在事件列表中等待,然后返回。参见示例 this recent post。这对于需要较长时间才能完成的页面至关重要。
请参阅 find_link_dom()
and click
方法的文档。它们不是很详细或示例不丰富,但确实提供了足够的内容供您玩弄和理解。
如果你需要询问 links 使用 find_all_links_dom()
, which returns an array or a reference to array (depending on context) of Firefox's DOM as 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 页面,了解您可以用它做什么。如果您只需要找出要单击哪个 link,find_link_dom()
的选项就足够了。
这仅在玩具页面上进行了测试,该页面使用 __doPostBack
link,在 link 中使用 <span>
。
页面上有一个 link,我想转到它,但它只是一个 javascript 命令。我如何使用 mechanize 去 link?
<a href="javascript:__doPostBack(ctl54$cphMainContent$resultsGrid$ctl54$ctl25$ctl62$ctl13,88)"><span>abc</span></a>
没有页面及其 HTML 和 JS,只能猜测。请注意,follow_link()
方法不适用于 JS links。下面的方法可以,当然没有页面我不能测试。
可能最好的选择是将 link(s) 作为 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
还有 text
和 text_contains
相关选项(而不是 text_regex
),以及其他一些选项。请注意,click
方法将在事件列表中等待,然后返回。参见示例 this recent post。这对于需要较长时间才能完成的页面至关重要。
请参阅 find_link_dom()
and click
方法的文档。它们不是很详细或示例不丰富,但确实提供了足够的内容供您玩弄和理解。
如果你需要询问 links 使用 find_all_links_dom()
, which returns an array or a reference to array (depending on context) of Firefox's DOM as 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 页面,了解您可以用它做什么。如果您只需要找出要单击哪个 link,find_link_dom()
的选项就足够了。
这仅在玩具页面上进行了测试,该页面使用 __doPostBack
link,在 link 中使用 <span>
。