find_all_links()Perl函数不';找不到所有链接

find_all_links()Perl函数不';找不到所有链接,perl,hyperlink,www-mechanize,Perl,Hyperlink,Www Mechanize,我从Perl开始,尝试编写一个脚本,将我从页面中注销(我已经完成了登录)。 我的想法是,我试图使用WWW::Mechanize(我也尝试了WWW::Mechanize::Firefox)中的find_link函数来查找注销链接,但它不起作用。 所以,我的问题是: MouseOver事件是否避免找到该链接?我认为WWW::Mechanize::Firefox支持javascript,但这可能不正确 <a class="hb2" href="/goform/Logout?logout=Logo

我从Perl开始,尝试编写一个脚本,将我从页面中注销(我已经完成了登录)。
我的想法是,我试图使用
WWW::Mechanize
(我也尝试了
WWW::Mechanize::Firefox
)中的find_link函数来查找注销链接,但它不起作用。 所以,我的问题是:


MouseOver事件是否避免找到该链接?我认为
WWW::Mechanize::Firefox
支持javascript,但这可能不正确

<a class="hb2" href="/goform/Logout?logout=Logout" onmouseover="(window.status='Logout');
return true">Logout</a>


有没有办法做我想做的事?非常感谢您提供的任何帮助或建议。

您确定您的源HTML中有此HTML片段吗?我的意思是,您的HTML代码片段可以通过Javascript动态创建,或者您的源HTML中有框架


因此,请显示
$mech->content()
的输出和处理此链接的代码(如上所述
$mech->find_link(text=>'Logout');
应该可以工作)。

您是否使用
mech dump
命令行实用程序转储了页面?试试看。如果您的链接显示在
mech dump
的输出中,则您调用的
find\u all\u links()
错误

如果
mech dump
没有显示您的链接,那么您可能是HTML格式不正确,或者HTML是通过JavaScript在浏览器中生成的。

显然,我的MozRepl(需要使用WWW::Mechanize::Firefox)插件安装得不好@gangabass,@andy我检查了HTML,它似乎在源代码中。所以@choroba我检查了为什么WWW::Mechanize::Firefox的行为与WWW::Mechanize相同,然后重新安装了该插件。
然后一切都很顺利。非常感谢大家抽出时间来帮助我。

WWW::Mechanize::Firefox
支持Javascript。如果使用它会发生什么?javascript
onmouseover
不应该干扰使用普通
WWW::Mechanize
查找链接。类似于
my$logout\u link=$mech->find\u link(text=>logout')这样的行应该可以正常工作。也许发布你的代码以便我们能更仔细地检查它?不,我没有。我的页面是https,需要身份验证,我不知道如何从脚本调用mech dump。我将从Perl程序内部“从脚本”中查找itIf,然后在
$mech
对象上调用
->dump\u links()
方法。如果您还没有听说过
->dump\u links()
方法,那么我建议您阅读整个WWW::Mechanize文档页面,因为这里有许多小技巧(
dump\u forms
save\u content
,等等)为了补偿格式错误的HTML,我偶尔会发现需要做一些类似的事情:$mech->update_HTML(HTML\u fix_函数($mech->content())@ddoxey:这就是为什么存在
->update\u html()
。至少,这就是我首先创建
->update_html()
的原因。它还有其他用途,特别是在自动化测试中。当你说“在源代码中”时,你是在什么时候看源代码的?加载页面后是否从浏览器中删除?如果是这样,那么该页面可能是由JavaScript生成的。你真正想看的是原始HTML内容,在任何浏览器接触它之前。是的,我从浏览器中获取它,因为我无法访问原始HTML。现在我知道了,我发现它是ASP生成的。行是
AspFormTag(“/goform/Logout”)