Windows 10上带有IE的量角器失败-错误代码199 [英] Protractor with IE on Windows 10 fails - error code 199

查看:352
本文介绍了Windows 10上带有IE的量角器失败-错误代码199的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法让量角器在Windows 10上使用IE11.它显示为Unable to create new service: InternetExplorerDriverService,并且存在代码199

I can't get protractor to work with IE 11 on Windows 10. It says Unable to create new service: InternetExplorerDriverService and exists with code 199

我尝试了重新安装/升级旧节点,npm,量角器,webdriver-manager& java;而且似乎没有任何区别.

I have tried the age old reinstalled/upgraded node, npm, protractor, webdriver-manager & java; and it didn't seem to make any difference.

量角器与Chrome兼容;并且在配置中使用Chrome不会影响IE.

Protractor works fine with Chrome; and having Chrome in the config does not affect IE.

我的配置文件:

// protractor.conf.js
exports.config = {
    framework: 'jasmine',
    specs: [
        'protractor/specs/**/*.js'
    ],
    multiCapabilities: [
        {
            browserName: 'internet explorer',
            version: 11,
            'ignoreProtectedModeSettings': true
        }
    ]
};

软件版本:

node --version
v8.9.4

npm --version
5.7.1

protractor --version
Version 5.3.0

java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

webdriver-manager status
[15:36:53] I/status - selenium standalone version available: 3.9.1 [last]
[15:36:53] I/status - chromedriver version available: 2.35 [last]
[15:36:53] I/status - geckodriver version available: v0.19.1 [last]
[15:36:53] I/status - IEDriverServer version available: 3.9.0 [last]
[15:36:53] I/status - android-sdk is not present
[15:36:53] I/status - appium is not present

完全错误

protractor ./tests/protractor.conf.js

(node:13724) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
[15:37:44] I/launcher - Running 1 instances of WebDriver
[15:37:44] I/local - Starting selenium standalone server...
[15:37:53] I/local - Selenium standalone server started at http://10.1.0.213:52331/wd/hub
[15:37:53] E/launcher - Unable to create new service: InternetExplorerDriverService
Build info: version: '3.9.1', revision: '63f7b50', time: '2018-02-07T22:42:28.403Z'
System info: host: 'my.hostname', ip: '10.1.0.213', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161'
Driver info: driver.version: unknown
[15:37:53] E/launcher - SessionNotCreatedError: Unable to create new service: InternetExplorerDriverService
Build info: version: '3.9.1', revision: '63f7b50', time: '2018-02-07T22:42:28.403Z'
System info: host: 'my.hostname', ip: '10.1.0.213', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161'
Driver info: driver.version: unknown
    at Object.checkLegacyResponse (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:546:15)
    at parseHttpResponse (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:509:13)
    at doSend.then.response (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:441:30)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
From: Task: WebDriver.createSession()
    at Function.createSession (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:769:24)
    at createDriver (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\index.js:170:33)
    at Builder.build (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\index.js:635:14)
    at Local.getNewDriver (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\built\driverProviders\driverProvider.js:53:33)
    at Runner.createBrowser (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\built\runner.js:195:43)
    at q.then.then (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\built\runner.js:339:29)
    at _fulfilled (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:834:54)
    at self.promiseDispatch.done (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:863:30)
    at Promise.promise.promiseDispatch (C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:796:13)
    at C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\q\q.js:604:44
[15:37:53] E/launcher - Process exited with error code 199

运行InternetExplorerDriverService手动打开一个窗口,其中显示

Running InternetExplorerDriverService manually opens a window which says

Started InternetExplorerDriver server (32-bit)
3.9.0.0
Listening on port 5555
Only local connections are allowed

但这不会改变结果.

推荐答案

为我完成的主要工作是重命名下载的文件! npm/selenium绝望地下载了C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\webdriver-manager\selenium\IEDriverServer3.9.0.exe,我删除了该版本,将其重命名为同一文件夹中的IEDriverServer.exe.然后就成功了.

The main thing that did it for me was renaming the downloaded file! npm/selenium downloaded C:\Users\my.username\AppData\Roaming\npm\node_modules\protractor\node_modules\webdriver-manager\selenium\IEDriverServer3.9.0.exe out of desperation I removed the version, renaming it to IEDriverServer.exe in the same folder; and that did the trick.

由于该项目的环境性质,我还需要让安全团队运行.这可能并不适用于所有人.

I also needed to get the security team to allow it to run, because of the nature of the environment for this project; this might not apply to everyone.

我在Wiki上也发现了一些陷阱.我不需要编辑注册表(无论如何我都无法访问它),所以也许别无选择.

There are also a list of gotchas I found on the wiki; I didn't need to edit my registry (I don't have access to it anyway), so maybe leave that as a last resort.

也来自Wiki https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver

  • 必须下载可执行文件IEDriverServer,并将其放置在您的PATH中.
  • 在Windows Vista或Windows 7的IE 7或更高版本上,必须将每个区域的保护模式设置设为相同的值.该值可以打开或关闭,只要每个区域都相同即可.要设置保护模式设置,请从工具"菜单中选择"Internet选项...",然后单击安全性"选项卡.对于每个区域,选项卡底部都会有一个标记为启用保护模式"的复选框.
  • 此外,对于IE 10及更高版本,必须禁用增强保护模式".在"Internet选项"对话框的高级"选项卡中找到此选项.
  • 浏览器的缩放级别必须设置为100%,以便可以将本地鼠标事件设置为正确的坐标.
  • 对于Windows 10,您还需要在显示设置中将更改文本,应用程序和其他项目的大小"设置为100%.
  • 仅对于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.请注意,FEATURE_BFCACHE子项可能存在也可能不存在,如果不存在则应创建.重要提示:在此注册表项内,创建一个名为iexplore.exe的DWORD值,其值为0.
  • The IEDriverServer exectuable must be downloaded and placed in your PATH.
  • On IE 7 or higher on Windows Vista or Windows 7, you must set the Protected Mode settings for each zone to be the same value. The value can be on or off, as long as it is the same for every zone. To set the Protected Mode settings, choose "Internet Options..." from the Tools menu, and click on the Security tab. For each zone, there will be a check box at the bottom of the tab labeled "Enable Protected Mode".
  • Additionally, "Enhanced Protected Mode" must be disabled for IE 10 and higher. This option is found in the Advanced tab of the Internet Options dialog.
  • The browser zoom level must be set to 100% so that the native mouse events can be set to the correct coordinates.
  • For Windows 10, you also need to set "Change the size of text, apps, and other items" to 100% in display settings.
  • For IE 11 only, you will need to set a registry entry on the target computer so that the driver can maintain a connection to the instance of Internet Explorer it creates. For 32-bit Windows installations, the key you must examine in the registry editor is HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE. For 64-bit Windows installations, the key is HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE. Please note that the FEATURE_BFCACHE subkey may or may not be present, and should be created if it is not present. Important: Inside this key, create a DWORD value named iexplore.exe with the value of 0.

如果您说错了话

SessionNotCreatedError: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.

然后,您将需要打开IE,并确保所有区域的设置都相同,即可以全部打开或全部关闭,但必须相同.也许最好从头开始尝试一下,以减少与原始问题无关的不良行为者的风险.

Then you will need to open IE and make sure the the setting is the same for all zones, that is it can be on for all or off for all, but must be the same. Probably best to try it with it on for all to begin with to reduce the risk from bad actors unrelated to the original issues.

在企业环境中,这可能需要管理员访问权限,并且/或者可能需要在每次登录/重新引导后执行操作,因为它似乎可以通过策略进行设置(但这超出了我的知识范围).

In an enterprise environment this might need admin access, and/or it might need doing after every sign in/reboot as it seems it can be set by policy (But that is out of scope of my knowledge).

这篇关于Windows 10上带有IE的量角器失败-错误代码199的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆