转到与mechanize-firefox的javascript链接

时间:2016-03-30 19:16:47

标签: perl mechanize www-mechanize-firefox

页面上有一个链接,我想去它,但它只是一个javascript命令。机械化如何进入链接?

export class MyService {
  list = [];

  get(): string[] {
    return this.list;
  }

  add(value: string): void {
    this.list.push(value);
  }
}

1 个答案:

答案 0 :(得分:1)

没有页面及其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方法将在返回之前等待事件列表。请参阅示例this recent post。这对于需要更长时间才能完成的页面至关重要。

查看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()的选项就应该是sifficient。

此功能仅在玩具页面上进行了测试,该页面使用__doPostBack链接,链接中包含<span>