简体   繁体   English

使用量角器e2e测试angular2应用程序时出错

[英]Errors when e2e testing angular2 app with protractor

I'm trying to run some simple tests on my Angular2 app using protractor. 我正在尝试使用量角器在Angular2应用上运行一些简单的测试。 I run ng serve in one command prompt and ng e2e in another. 我在一个命令提示符下运行ng serve在另一个命令提示符下运行ng serve ng e2e I get several errors/comments related to a session exception. 我收到一些与会话异常相关的错误/评论。 Here is a portion of it: 这是其中的一部分:

ERROR:child_process_launcher.cc(536)] Failed to launch child process
...
I/direct - Using ChromeDriver directly...
I/launcher - Running 1 instances of WebDriver
E/launcher - session not created exception from tab crashed
(Session info: chrome=55.0.2883.87)
(Driver info: chromedriver=2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa
),platform=Windows NT 6.1.7601 SP1 x86_64)
  at WebDriverError (C:\development\SolarUI11\node_modules\protractor\node_mod
es\selenium-webdriver\lib\error.js:27:5)
  at SessionNotCreatedError (C:\development\SolarUI11\node_modules\protractor\
de_modules\selenium-webdriver\lib\error.js:308:5)
  at Object.checkLegacyResponse (C:\development\SolarUI11\node_modules\protrac
tor\node_modules\selenium-webdriver\lib\error.js:639:15)

I'm very new to Angular2 and e2e testing, so I'm a complete loss for what I'm looking at here and what I should be expecting. 我对Angular2和e2e测试非常陌生,因此对于我在这里所看到的以及我应该期望的一切,我完全不知所措。

app.po.ts: app.po.ts:

import { browser, element, by } from 'protractor';

export class SolarUi4Page {
  navigateTo() {
    return browser.get('http://localhost:4200/');
  }

  getTitle() {
    return element(by.css('h1')).getText();
  }

  getAddButton() {
    return element(by.css('.icon-plus'));
  }

  getAddButtonDp() {
    return element(by.binding('dPoint.tDataPoint'));
  }

  getAddButtonIccp() {
    return element(by.binding('dPoint.tICCP'));
  }
  getAddButtonStartD() {
    return element(by.binding('dPoint.tStartDate'));
  }

  getAddButtonEndD() {
    return element(by.binding('dPoint.tEndDate'));
  }

  getAddButtonSubmit() {
    return element(by.id('addSubmit'));
  }

  getStartDate() {
    return element(by.id('calStartTest'));
  }

  getEndDate() {
    return element(by.id('calEndTest'));
  }

  getSearchButton() {
    return element(by.css('.icon-search'));
  }

  getTable() {
    return element(by.id('myTable'));
  }
}

app.e2e-spec.ts: app.e2e-spec.ts:

import { SolarUi4Page } from './app.po';
import { by } from 'protractor';

describe('solar-ui4 main page', function() {
  let page: SolarUi4Page;

  beforeEach(() => {
    page = new SolarUi4Page();
  });

  it('should display title Solar Project', () => {
    page.navigateTo();
    expect(page.getTitle()).toEqual('Solar Project');
  });

  it('should add new value to array/table and display it', () => {
    page.navigateTo();
    let addButton = page.getAddButton();
    addButton.click();
    let addDp = page.getAddButtonDp();
    let addIccp = page.getAddButtonIccp();
    let addSd = page.getAddButtonStartD();
    let addEd = page.getAddButtonEndD();
    addDp.sendKeys('newDp');
    addIccp.sendKeys('newIccp');
    addSd.sendKeys('11/12/2016');
    addEd.sendKeys('11/20/2016');
    let addSubmit = page.getAddButtonSubmit();
    addSubmit.click();
    let startFormVal = page.getStartDate();
    let endFormVal = page.getEndDate();
    startFormVal.sendKeys('11/02/2016');
    endFormVal.sendKeys('12/20/2016');
    let searchButton = page.getSearchButton();
    searchButton.click();
    let table = page.getTable();
    let lastRow = table.all(by.tagName('tr')).last();
    expect(lastRow.get(0).getText()).toEqual('newDp');
    expect(lastRow.get(1).getText()).toEqual('newIccp');
    expect(lastRow.get(2).getText()).toEqual('11/02/2016');
    expect(lastRow.get(3).getText()).toEqual('12/20/2016');
  })

protractor.conf.js: protractor.conf.js:

// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts

/*global jasmine */
var SpecReporter = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  useAllAngular2AppRoots: true,
  beforeLaunch: function() {
    require('ts-node').register({
      project: 'e2e'
    });
  },
  onPrepare: function() {
    jasmine.getEnv().addReporter(new SpecReporter());
  }
};

If I need to show more errors/add more code let me know. 如果我需要显示更多错误/添加更多代码,请告诉我。

This doesn't solve the problem with Chrome/chromedriver/webdriver-manager but to at least get the e2e tests to run correctly, change the browser in protractor.conf.js : 这不能解决Chrome / chromedriver / webdriver-manager的问题,但要至少使e2e测试正常运行,请在protractor.conf.js更改浏览器:

'browserName': 'firefox'

Then the e2e tests will at least be run in Firefox. 然后,e2e测试将至少在Firefox中运行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM