【问题标题】:How to trigger an onchange event in Firefox::Mechanize?如何在 Firefox::Mechanize 中触发 onchange 事件?
【发布时间】:2016-01-27 04:13:33
【问题描述】:

我正在使用 Firefox::Mechanize 来抓取网站。我被困在一个下拉菜单上,该菜单有一个与之关联的 onchange 事件。

我可以从下拉菜单中选择我想要的选项,并且我可以验证这一点,因为下拉菜单现在显示了我选择的选项。但它不会触发与之关联的 onchange 事件。

我想在选择我的选项后我可能需要一个“点击”事件,但我不确定如何整合它。

这是 HTML 的一部分:

<select class="" id="select20279" name="20279" onchange="selectAction(this, this.options[this.selectedIndex].value, '20279');">
    <option value="">please choose</option>
    <option value="edit">Edit</option>
    <option value="view">View</option>
    <option value="delete_now">Delete</option>
</select>

这是我的脚本:

use WWW::Mechanize::Firefox;

my $mech = WWW::Mechanize::Firefox->new( tab => 'current', autoclose => 0 );

$mech->get('http://www.mywebsite.com/');
$mech->select("20279", "view");

提前致谢。

【问题讨论】:

    标签: html perl web-scraping onchange www-mechanize-firefox


    【解决方案1】:

    获取 DOM 元素,然后将更改或单击事件发送给它:

    my $select = $mech->selector('#select20279', only => 1);
    $select->__change();
    # or
    $select->__click();
    

    另见

    http://search.cpan.org/~corion/MozRepl-RemoteObject-0.39/lib/MozRepl/RemoteObject.pm

    【讨论】:

    • 非常感谢 Corion。这行得通,但我需要对“选择器”行稍作改动。我需要将“only”更改为“single”。
    猜你喜欢
    • 2015-08-22
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    相关资源
    最近更新 更多