[英]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.