如何使用Test :: WWW :: Selenium向Firefox发送击键?

时间:2016-06-15 19:16:09

标签: javascript perl selenium

我试过了:

$sel->type_keys_ok("//fieldset[2]/input", "KEYS");

没有结果。什么都没有改变。

也尝试过:

$sel->send_keys_ok("//fieldset[2]/input", "KEYS");

未实施。

也试过:

my $res = $sel->get_eval('
   function simulateKeyEvent(character) {
   var evt = document.createEvent("KeyboardEvent");
   (evt.initKeyEvent || evt.initKeyboardEvent)("keypress", true, true, window,
                0, 0, 0, 0,
                0, character.charCodeAt(0)) 
   var canceled = !body.dispatchEvent(evt);
   if(canceled) {
   // A handler called preventDefault
   alert("canceled");
    } else {
   // None of the handlers called preventDefault
     alert("not canceled");
   }
   };
   simulateKeyEvent("K");' );

然后我得到了这个错误:'initKeyEvent'调用了一个没有实现接口KeyboardEvent的对象。感谢。

1 个答案:

答案 0 :(得分:1)

版本1:

my $element = $sel->find_element("//input[\@name='q']");
$element->send_keys("KEYS");
$element->submit();

版本2使用WDKeys:

use Selenium::Remote::WDKeys;

my $element = $sel->find_element("//input[\@name='q']");
$element->send_keys("KEYS");
$sel->send_keys_to_active_element(KEYS->{'enter'});

有关详细信息,请查看CPAN Selenium::Remote::Driver