4

Protractor 在 Chrome 上运行良好,但我无法启动 Firefox 或 Internet Explorer。

  • Windows 7的
  • 节点 v6.9.1

片段来自package.json

"scripts": {
    ....
    "webdriver-manager-update": "webdriver-manager update --ie",
    "protractor": "protractor protractor.conf.js",
    ...
},
...
"devDependencies": {
    ...
    "protractor": "5.1.1",
    ...
}

protractor.conf.js

exports.config = {
    capabilities: {
      browserName: "firefox" // or "internet explorer"
    },
    specs: ["target/e2e/**/*.e2e-spec.js"]
};

运行后,npm run webdriver-manager-update包含<project-home>\node_modules\protractor\node_modules\webdriver-manager\selenium\文件chromedriver_2.28.exe和.geckodriver-v0.15.0.exeIEDriverServer3.3.0.exe

运行时npm run protractor,出现错误:

[12:29:45] I/launcher - Running 1 instances of WebDriver
[12:29:45] I/local - Starting selenium standalone server...
[12:29:46] I/local - Selenium standalone server started at http://192.168.213.25:62661/wd/hub
[12:29:46] E/launcher - The path to the driver executable must be set by the webdriver.gecko.driver system property

(对于IE来说,它是指webdriver.ie.driver系统属性)

经过大量谷歌搜索,我尝试了以下修复:

a) 添加<project-home>\node_modules\protractor\node_modules\webdriver-manager\selenium\到系统环境变量Path。这似乎没有什么区别。

b) 将以下行添加到protractor.conf.js

seleniumArgs: ["-Dwebdriver.gecko.driver=<project-home>\\node_modules\\protractor\\node_modules\\webdriver-manager\\selenium\\geckodriver-v0.15.0.exe"],

现在npm run protractor产生:

[12:40:35] I/launcher - Running 1 instances of WebDriver
[12:40:35] I/local - Starting selenium standalone server...
[12:40:35] E/launcher - Error: Error: Server terminated early with status 1
    at Error (native)
    at earlyTermination.catch.e (<project-home>\node_modules\selenium-webdriver\remote\index.js:252:52)
    at process._tickCallback (internal/process/next_tick.js:103:7)
[12:40:35] E/launcher - Process exited with error code 100

(与 IE 类似的行为)

我的搜索结果表明我不是唯一遇到此问题的人,但不幸的是,我没有找到解决方案。

4

2 回答 2

6

最后,我在Nick Tomlin 的回答中找到了解决方案:

它不是seleniumArgs您需要设置的,而是localSeleniumStandaloneOpts.jvmArgs. 所以,在 中protractor.conf.js,写:

localSeleniumStandaloneOpts: {
    jvmArgs: ["-Dwebdriver.gecko.driver=<project-home>\\node_modules\\protractor\\node_modules\\webdriver-manager\\selenium\\geckodriver-v0.15.0.exe"]
  },

(类似于 IE)

于 2017-03-29T11:25:33.330 回答
1

您可以使用localSeleniumStandaloneOpts. 本地驱动程序选项允许您在 Protractor 测试之前启动 selenium 独立服务器,运行测试,最后关闭服务器。

您可以执行此操作的另一种方法是在您的配置文件中使用webdriver-manager start --ie和。seleniumAddress在您的配置文件中,您将设置seleniumAddress: "http://127.0.0.1:4444/wd/hub".

关于 Firefox 的快速说明。确保您运行的是最新的 gecko 驱动程序和 Firefox 版本。如果 Firefox 测试没有正常运行,请查看gecko 驱动程序 github 问题页面

关于 Internet Explorer 的另一个说明。您应该使用 IE11 和 32 位驱动程序版本。如果您查看Protractor 问题页面,已确定 iedriver 存在问题。我认为这些问题不会得到解决。

于 2017-03-30T06:00:30.727 回答