UnsupportedOperationError:在使用量角器和Internet Explorer 11调用sendKeys(Key.ENTER)时发生sendKeysToActiveElement错误

时间:2018-08-23 15:27:32

标签: selenium webdriver protractor internet-explorer-11 selenium-iedriver

我正在使用的环境是

  • 量角器5.3.1
  • 黄瓜4.2.1
  • IE11
  • selenium-webdriver 3.6.0

在我正在测试的应用程序页面上,没有可单击的按钮,您需要在输入字段中输入文本,然后发送ENTER键。以下内容适用于chrome和firefox。

browser.driver.findElement(By.className('myClass')).then((text) => {
    text.sendKeys('abc'); // this works fine in IE11
    text.sendKeys(Key.ENTER);
});

问题在于它不会在IE11中发送ENTER键,只是跳过了这一步而在下一步测试中失败。

我也尝试过:

browser.actions().sendKeys(protractor.Key.RETURN).perform();

当我尝试此操作时,返回以下错误:

[15:29:10] E/launcher - UnsupportedOperationError: sendKeysToActiveElement
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:13:22.693Z'
System info: host: 'ABC', ip: '9.162.xxx.xxx', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_181'

1 个答案:

答案 0 :(得分:1)

正如您提到的那样,以下行不起作用:

text.sendKeys(Key.ENTER);

您也可以使用:

text.sendKeys(Key.RETURN);

您可以在Typing Enter/Return key in Selenium

中找到详细的讨论

如果元素在表单中,您还可以使用另一种替代方法:

text.submit();

您可以在Selenium: submit() works fine, but click() does not

中找到详细的讨论

此外,在使用 Internet Explorer v11 时,您需要使用Required Configuration配置测试框架。除了专门针对IE 11的这些 以外,您还需要在目标计算机上设置注册表项,以便驱动程序可以维持与它创建的 Internet Explorer 实例如下:

  • 对于32位Windows安装,必须在注册表编辑器中检查的键是:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE. 
    
  • 对于64位Windows安装,密钥为:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE. 
    

您可以在Internet Explorer 11 getting stuck randomly while executing tests through IEDriverServer and Selenium

中找到详细的讨论