【问题标题】:Protractor v5.3.0 & Protractor-Cucumber-Framework v4.2.0 not working with IE11 on Windows 10Protractor v5.3.0 和 Protractor-Cucumber-Framework v4.2.0 在 Windows 10 上无法与 IE11 一起使用
【发布时间】:2018-03-13 17:07:46
【问题描述】:

总结:

我在 Windows 10 上使用 Protractor v5.3.0 和 Protractor-Cucumber-Framework v4.2.0。我使用 WebStorm IDE 用 Ja​​vascript 编写了一个示例测试项目。我使用 Chrome 浏览器运行示例测试场景没有任何问题。然而,当我尝试使用 IE11 时,相同的测试场景无法运行。相反,我看到 WebStorm 终端窗口上显示以下错误消息:

Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2>node_modules\.bin\protractor cucumber.config.js
(node:17976) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
[15:58:12] I/launcher - Running 1 instances of WebDriver
[15:58:12] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
F---

Failures:

1) Scenario: Protractor and Cucumber Test # features\testone.feature:7
   × Given I go to "https://angularjs.org/" # features\step_definitions\testone.steps.js:73
       JavascriptError: Error executing JavaScript
       Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:33:15.31Z'
       System info: host: <computer name>, ip: <ip address>, os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '9.0.4'
       Driver info: driver.version: unknown
           at Object.checkLegacyResponse (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\selenium-webdriver\lib\error.js:546:15)
           at parseHttpResponse (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\selenium-webdriver\lib\http.js:509:13)
           at doSend.then.response (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\selenium-webdriver\lib\http.js:441:30)
           at <anonymous>
           at process._tickCallback (internal/process/next_tick.js:188:7)
       From: Task: Protractor.get(https://angularjs.org/) - reset url
           at thenableWebDriverProxy.schedule (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\selenium-webdriver\lib\webdriver.js:807:17)
           at ProtractorBrowser.executeScriptWithDescription (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\protractor\built\browser.js:404
:28)
           at driver.controlFlow.execute.then.then.then (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\protractor\built\browser.js:679:25)
           at ManagedPromise.invokeCallback_ (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\selenium-webdriver\lib\promise.js:1376:14)
           at TaskQueue.execute_ (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\selenium-webdriver\lib\promise.js:3084:14)
           at TaskQueue.executeNext_ (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\selenium-webdriver\lib\promise.js:3067:27)
           at asyncRun (C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\selenium-webdriver\lib\promise.js:2927:27)
           at C:\Users\<user name>\<project name>\WebStorm\protractorCucumberTest_v2\node_modules\selenium-webdriver\lib\promise.js:668:7
           at <anonymous>
           at process._tickCallback (internal/process/next_tick.js:188:7)
   - When I add "Be Awesome" in the task field # features\step_definitions\testone.steps.js:77
   - And I click the add button # features\step_definitions\testone.steps.js:81
   - Then I should see my new task in the list # features\step_definitions\testone.steps.js:86

1 scenario (1 failed)
4 steps (1 failed, 3 skipped)
0m00.250s
[15:58:29] I/launcher - 0 instance(s) of WebDriver still running
[15:58:29] I/launcher - internet explorerANY #01 failed 1 test(s)
[15:58:29] I/launcher - overall: 1 failed spec(s)
[15:58:29] E/launcher - Process exited with error code 1

在新打开的 IE 窗口中出现无法访问此页面的错误信息。

我已经查看了许多有关此主题的 Stack Overflow 帖子以及其他地方。到目前为止,我无法让 IE 11 工作。感谢您的帮助...

注意: 每次运行测试时,我都会在新打开的 IE 窗口中看到不同的 localhost 端口号。

http://localhost:44234/
http://localhost:30821/

注意:我是使用 JavaScript 和量角器等的新手。

详细说明:

所有必需的软件都已本地安装到项目中。我目前没有在计算机上全局安装任何版本的量角器等。

我的 WebStorm 项目结构是:

我的 package.json 文件是:

{
  "name": "protractorCucumberTest_v2",
  "version": "1.0.0",
  "description": "To test Protractor and Cucumber Integration",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "tbd"
  },
  "keywords": [],
  "author": "user name",
  "license": "ISC",
  "dependencies": {
    "chai": "^4.1.2",
    "chai-as-promised": "^7.1.1",
    "cucumber": "^4.0.0",
    "protractor": "^5.3.0",
    "protractor-cucumber-framework": "^4.2.0"
  }
}

我的 testone.feature 文件是:

#features/test.feature
Feature: Angular Task List
  As a basic user
  I should be able to add and remove tasks from the task list
  So that I can keep track of my tasks

  Scenario: Protractor and Cucumber Test
    Given I go to "https://angularjs.org/"
    When I add "Be Awesome" in the task field
    And I click the add button
    Then I should see my new task in the list

我的 testone.steps.js 文件是:

var {Given, Then, When} = require ('cucumber');
var chai = require('chai'),
    expect = chai.expect,
    chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);

Given(/^I go to "([^"]*)"$/, function (site) {
    return browser.get(site);
});

When(/^I add "([^"]*)" in the task field$/, function (task) {
    return element(by.model('todoList.todoText')).sendKeys(task);
});

When(/^I click the add button$/, function () {
    var el = element(by.css('[value="add"]'));
    return el.click();
});

Then(/^I should see my new task in the list$/, function () {
    var todoList = element.all(by.repeater('todo in todoList.todos'));
    expect(todoList.count()).to.eventually.equal(3);
    return expect(todoList.get(2).getText()).to.eventually.equal('Do not Be Awesome');
});

我的 cucumber.config.js 文件是:

exports.config = {

    capabilities: {
        seleniumAddress: 'http://localhost:4444/wd/hub',
        // browserName: 'chrome'
        browserName: 'internet explorer',
        ignoreProtectedModeSettings: true,
        version: 'ANY'
    },

    localSeleniumStandaloneOpts : {
        jvmArgs : ["-Dwebdriver.ie.driver=./node_modules/protractor/node_modules/webdriver-manager/selenium/IEDriverServer3.11.0.exe"],
    },

    framework: 'custom',
    frameworkPath: require.resolve('protractor-cucumber-framework'),
    specs: [
        './features/*.feature'
    ],
    cucumberOpts: {
        require: ['./features/step_definitions/*.steps.js'],
        tags: [],
        strict: true,
        dryRun: false,
        compiler: []
    },
    onPrepare: function () {
        browser.manage().window().maximize();
    }
};

我用来启动网络服务器的命令是:

node_modules\.bin\webdriver-manager start --ie

我用来启动测试运行的命令是:

node_modules\.bin\protractor cucumber.config.js

软件版本信息:

npm: v5.5.1

节点:v8.9.1

量角器:v5.3.0

量角器黄瓜框架:v4.2.0

黄瓜-js:v4.0.0

JDK:9.0.4

JRE:9.0.4

node_modules\.bin\webdriver-manager status
[15:22:42] I/status - selenium standalone version available: 3.11.0 [last]
[15:22:42] I/status - chromedriver version available: 2.36 [last]
[15:22:42] I/status - geckodriver version available: v0.19.1 [last]
[15:22:42] I/status - IEDriverServer version available: 3.11.0 [last]
[15:22:42] I/status - android-sdk is not present
[15:22:42] I/status - appium is not present

截至 2018 年 3 月 20 日的新信息:

我在我的系统上尝试了以下技术堆栈:

  • 量角器
  • Jasmine 测试框架
  • IE 11
  • Windows 10

使用此设置,我可以执行 IE 11 测试。但是,当我在具有大致相同软件的同一台计算机上使用以下设置时,IE 11 测试将不起作用。将测试框架从 Jasmine 切换到 Cucumber 似乎是关键。我们想将 Cucumber 用于我们的 BDD 测试自动化程序。

  • 量角器
  • Cucumber 测试框架(通过 Cucumber 和 protractor-cucumber-framework)
  • IE 11
  • Windows 10

对于现在适用于 IE 11 的 Protractor / Jasmine 测试设置,以下代码文件构成了我的项目的基础:

package.json

{
  "name": "protractorJasmineTest",
  "version": "1.0.0",
  "description": "Trial replication of locally installed variant the project",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "tbd"
  },
  "keywords": [],
  "author": "user name",
  "license": "ISC",
  "dependencies": {
    "protractor": "^5.3.0"
  }
}

protractor.config.js

exports.config = {

    jvmArgs: ['-Dwebdriver.ie.driver=.\node_modules\protractor\node_modules\webdriver-manager\selenium\IEDriverServer3.11.1.exe'],
    framework: 'jasmine',
    seleniumAddress: 'http://localhost:4444/wd/hub',
    multiCapabilities: [
        {
            browserName: 'internet explorer',
            ignoreProtectedModeSettings: true,
            version: 'ANY'
            // ensureCleanSession : 'true'
            // browserName: 'chrome'
        }
    ],

    specs: ['spec.js']

}

spec.js

describe('Protractor Demo App', function() {

    it('should have a title', function() {
        browser.manage().timeouts().pageLoadTimeout(30000);
        browser.driver.get('https://angularjs.org');
        expect(browser.driver.getTitle()).not.toEqual('Super Calculator');
    });

});

【问题讨论】:

  • 通常情况下,IE的webdriver环境设置比其他浏览器复杂,请阅读github.com/SeleniumHQ/selenium/wiki/…的一些提示
  • @yong :感谢您提供的一般信息。我已经查看了它,不幸的是我仍然没有我的测试和 IE11 的工作设置。我开始认为这种技术组合不适用于 IE11。

标签: javascript jasmine protractor cucumber internet-explorer-11


【解决方案1】:

我现在在 Slack 上的 Cucumber OSS 社区 (cucumberbdd.slack.com) 的官方 #help-cucumber-js 频道上收到了有关此问题的回复。基本上现在 cucumber-js 在 IE 11 上存在问题。

https://github.com/cucumber/cucumber-js/issues/1011。 [Internet explorer 11 加载 dist/cucumber.js 失败·Issue #1011·cucumber/cucumber-js]

以下是测试 Cucumber 在您选择的浏览器中运行的网站链接,它是上述 GitHub 问题中信息的一部分。

http://cucumber.github.io/cucumber-js/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2016-01-12
    • 2020-05-14
    • 2016-05-11
    • 1970-01-01
    相关资源
    最近更新 更多