我正在使用的环境是
在我正在测试的应用程序页面上,没有可单击的按钮,您需要在输入字段中输入文本,然后发送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'
答案 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.