繁体   English   中英

手动进行Perl和Selenium火灾事件

[英]Perl & Selenium fire event manually

我想通过Perl和Selenium设置输入元素的value属性,如下所示:

my $script = q{
    arguments[0].setAttribute(arguments[1], arguments[2]);
};
$driver->execute_script($script, $element, $attribut, $new_value);

效果很好,我在屏幕上看到了新值,只是没有以这种方式触发“ onchange”事件。 我尝试过类似的事情:

my $script = q{
    arguments[0].setAttribute(arguments[1], arguments[2]); 
    arguments[0].onchange();
};

但什么也没发生。

这是我的解决方案(在Perl中):

sub fire_event {
    my $element = shift // croak("Which element should be used to fire the even?");
    my $event   = shift // croak("Which event should be fired");

    my $script;

    if($browser eq "internet explorer") {
        $script .= "var evt = document.createEventObject();";
        $script .= "return arguments[0].fireEvent('on'+".$event.",evt);";
    }
    else {
        $script .= 'var evt = document.createEvent("HTMLEvents");'."\n";;
        $script .= "evt.initEvent('". $event ."', true, true );\n";
        $script .= "return !arguments[0].dispatchEvent(evt);\n";
    }

    my $rc = $driver->execute_script($script, $element);

    return $rc
}

my $returncode = fire_event($elem, "submit");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM