页面上有一个链接,我想去它,但它只是一个javascript命令。机械化如何进入链接?
export class MyService {
list = [];
get(): string[] {
return this.list;
}
add(value: string): void {
this.list.push(value);
}
}
答案 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
还有text
和text_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>
。