2015-10-28 98 views
0

我想通過Perl來設置輸入元素的值屬性&硒是這樣的:的Perl和硒火災事件手動

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(); 
}; 

但沒有任何反應。

回答

0

這裏是我的解決方案(在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");