Html 网站按钮点击-Perl WWW::Mechanize

Html 网站按钮点击-Perl WWW::Mechanize,html,perl,automation,www-mechanize,Html,Perl,Automation,Www Mechanize,我尝试使用perl脚本自动化与网站的交互 我使用模块WWW::Mechanize来实现我的设计。但我无法使用下面的命令在perl脚本中执行按钮单击 $mech->click( $button [, $x, $y] ) $mech->click_button( ... ) 这是因为该按钮不属于任何形式,并且没有名称,所以我无法在perl脚本中调用或定位该按钮。如何才能像与浏览器交互一样在perl脚本中单击此按钮?多谢各位 <button class="button tran

我尝试使用perl脚本自动化与网站的交互

我使用模块WWW::Mechanize来实现我的设计。但我无法使用下面的命令在perl脚本中执行按钮单击

$mech->click( $button [, $x, $y] ) 
$mech->click_button( ... ) 
这是因为该按钮不属于任何形式,并且没有名称,所以我无法在perl脚本中调用或定位该按钮。如何才能像与浏览器交互一样在perl脚本中单击此按钮?多谢各位

<button class="button transactional" id="checkout-now"><span>Check Out Now</span></button>
现在退房

我不能100%确定你想要什么,但我会努力的。 对于任何类型的交互,都不需要将按钮作为表单的一部分。您只需使用JavaScript和HTML就可以做到这一点

$('#checkout-now').click( function() {
     alert('Hello!');
     //Do other stuff here, regarding the form! (Call Perl scripts etc.)
});

它是如何工作的快速示例!
希望这能解决您的问题。

您可以在此按钮上添加onclick事件。像这样:

<button onlick="alert('hello');">Click Me</button>
点击我

如果按钮不属于任何形式,它应该定义onclick事件,如提到的@Bilzac和@jackit。在这种情况下,您无法重现浏览器的行为,因为
WWW::Mechanize
只进行html分析


处理JavaScript事件比实现整个JavaScript事件和DOM交互更容易实现浏览器的网络活动。

单击浏览器中的按钮只运行一段JavaScript。在WWW::Mechanize中不能这样做,因为


但是,您可以做的是找到在单击按钮时正在运行的JavaScript代码,并编写一些Perl代码来执行相同的操作。不幸的是。即使是在其他方面非常优秀的程序,似乎也没有任何简单的方法来列出与元素关联的所有事件处理程序。(确实存在一个扩展,但乍一看它似乎工作得不太好。)bookmarklet可能也值得一试。

有时候,您所需要的只是
$mech->post()
,因为当您单击某个元素时,很难找到JavaScript的运行情况

因此,您需要在单击此按钮(您可以使用Firefox HttpFox)时找到执行的请求,然后使用WWW::Mechanize构造相同的请求:

$mech->post($request_url, Content => {FORM_FIELDS...});

谢谢你的回复。我为我的问题提供了更多的信息。请再看一遍这个问题。很抱歉我的问题描述得不好。谢谢你的回复。我为我的问题提供了更多的信息。请再看一遍这个问题。我很抱歉在我的问题中我的描述不好。他正在尝试自动点击链接或类似的东西,他可能在一个甚至没有浏览器或javascript访问权限的环境中(例如,试图在AIX或一些没有repo管理器的操作系统上安装包)。yko-感谢您的回答。然而,这个网站不属于我。因此,我无法更改html方法。我怎样才能做到这一点?谢谢。有两种方法:查看JavaScript(这很无聊,需要很长时间,需要JS知识)和查看浏览器的网络活动。使用Firefox或开发者工具/firbug的Chromium网络选项卡,查看当您单击按钮并在脚本中实现该网络活动时发生了什么。这就是我不使用yko的原因(虽然有时非常方便),谢谢你分享宝贵的经验。我想问你,你能告诉我如何使用firebug来查看脚本正在做什么吗?谢谢。mozrepl的答案在哪里?我一直在等着投票,谢谢。我可以用你上面的方法解决我的问题。