簡體   English   中英

量角器+黃瓜+打字稿失敗

[英]protractor + cucumber + Typescript failing

  • 節點版本: 4.4.5
  • 量角器版本: 3.3.0
  • 瀏覽器: chrome
  • 操作系統和版本Win 7

我正在嘗試在打字稿中寫出量角器+黃瓜組合。 我的項目有一個簡單的功能來打開頁面並輸入三個字段。 我沒能運行量角器。 它讓我低於錯誤。

$ protractor protractor.conf.js [13:40:55]我/托管 - 在http:// localhost:4444 / wd / hub使用selenium服務器

[13:40:55] I / launcher - 運行WebDriver的1個實例

⨯無法編譯TypeScript

.. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(1,30):找不到命名空間'量角器'。 (2503).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(2,18):找不到命名空間'webdriver'。 (2503).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(14,21):找不到名稱'element'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(14,29):找不到名字'by'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(15,44):找不到名稱'by'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(16,48):找不到名稱'by'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(17,50):找不到名字'by'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(18,47):找不到名稱'by'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(19,32):找不到名稱'element'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(19,40):找不到名字'by'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.page.ts(36,29):找不到名字'by'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(1,13):找不到名稱'require'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(1,33):找不到名稱'require'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(4,42):找不到模塊'cucumber-tsflow'。 (2307).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(5,19):找不到名稱空間'cucumber'。 (2503).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(10,7):對裝飾器的實驗支持是一個在將來的版本中可能會發生變化的功能。 設置'experimentalDecorators'選項以刪除此警告。 (1219).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(14,13):對裝飾器的實驗支持是一個在將來的版本中可能會發生變化的功能。 設置'experimentalDecorators'選項以刪除此警告。 (1219).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(15,9):找不到名稱'瀏覽器'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(15,21):找不到名稱'瀏覽器'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(16,27):找不到名稱'element'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(16,35):找不到名稱'by'。 (2304).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(21,13):對裝飾器的實驗支持是一個在將來的版本中可能會發生變化的功能。 設置'experimentalDecorators'選項以刪除此警告。 (1219).. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(26,13):對裝飾器的實驗支持是一個在將來的版本中可能會發生變化的功能。 設置'experimentalDecorators'選項以刪除此警告。 (1219)

.. \\ e2e \\ features \\ step_definitions \\ factory \\ factory-form.steps.ts(31,13):對裝飾器的實驗支持是一個在將來的版本中可能會發生變化的功能。 設置'experimentalDecorators'選項以刪除此警告。 (1219)

[13:40:58] E / launcher - 進程已退出,錯誤代碼為1

protractor.conf.js

require('ts-node/register');

exports.config = {
    useAllAngular2AppRoots: true,

    exclude: [],

    allScriptsTimeout: 110000,

    seleniumAddress: 'http://localhost:4444/wd/hub',
    baseUrl: "http://localhost:5001/",

    framework: 'custom',
    frameworkPath: require.resolve('protractor-cucumber-framework'),
    capabilities: {
        'browserName': 'chrome'
    },
    cucumberOpts: {
        require: ["../e2e/features/step_definitions/factory/*.steps.ts"],
        format: "pretty"
    },

    specs: ['../e2e/features/createfactory.feature'],

    onPrepare: function () {
        browser.ignoreSynchronization = true;
    }
};

工廠form.steps.ts

let chai = require('chai').use(require('chai-as-promised'));
let expect = chai.expect;

import {binding, given, when, then} from "cucumber-tsflow";
import Callback = cucumber.CallbackStepDefinition;

import {FactoryFormPageObject} from './factory-form.page';

@binding
class FactoryFormSteps {
    private factoryFormPageObject: FactoryFormPageObject = new FactoryFormPageObject();

    @given(/^I navigate to factory page$/)
    private givenUserClicksFactoryLink(callback: Callback) {
        browser.get(browser.baseUrl);
        var factoryMenu = element(by.id("factory"));
        factoryMenu.click().then(callback);
    };

    @given(/^I input mandatory fields$/)
    private givenUserInputsMandatoryFields(callback: Callback) {
        callback(null, 'pending');
    };

    @when(/^I click save button$/)
    private whenUserClicksSaveButton(callback: Callback) {
        callback(null, 'pending');
    };

    @then(/^a new factory should be created with the mandatory fields$/)
    private thenFactoryisSaved(callback: Callback) {
        callback(null, 'pending');
    };
}

工廠form.page.ts

import ElementArrayFinder = protractor.ElementArrayFinder;
import Promise = webdriver.promise.Promise;

export class FactoryFormPageObject {
    private form;
    private nameInput;
    private address1Input;
    private countryDropdown;
    private submitButton;
    private goToFactoryLink;

    constructor() {

        this.form = element(by.name('factoryForm'));
        this.nameInput = this.form.element(by.name('factoryName'));
        this.address1Input = this.form.element(by.name('address1'));
        this.countryDropdown = this.form.element(by.name('country'));
        this.submitButton = this.form.element(by.name('save'));
        this.goToFactoryLink = element(by.id('factory'));

    }

    setName(value: string): Promise<void> {
        return this.nameInput.clear().sendKeys(value);
    }

    setAddress1(value: string): Promise<void> {
        return this.address1Input.clear().sendKeys(value);
    }

    setCountry(value: string): Promise<void> {
        return this.selectDropdownbyNum(this.countryDropdown, 1);
    }

    selectDropdownbyNum(element, optionNum): Promise<void> {
        return  element.all(by.tagName('option')).get(optionNum).click();
    };

}

的package.json

{
  "name": "ethos-client",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "start": "ng serve",
    "postinstall": "typings install",
    "lint": "tslint \"src/**/*.ts\"",
    "test": "ng test",
    "pree2e": "webdriver-manager update",
    "e2e": "protractor"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "2.0.0-rc.4",
    "@angular/compiler": "2.0.0-rc.4",
    "@angular/core": "2.0.0-rc.4",
    "@angular/forms": "0.2.0",
    "@angular/http": "2.0.0-rc.4",
    "@angular/platform-browser": "2.0.0-rc.4",
    "@angular/platform-browser-dynamic": "2.0.0-rc.4",
    "@angular/router": "3.0.0-beta.1",
    "@angular/router-deprecated": "2.0.0-rc.2",
    "@angular/upgrade": "2.0.0-rc.4",
    "angular2-in-memory-web-api": "0.0.14",
    "systemjs": "0.19.27",
    "core-js": "^2.4.0",
    "reflect-metadata": "^0.1.3",
    "rxjs": "5.0.0-beta.6",
    "zone.js": "^0.6.12",
    "bootstrap": "^3.3.6",
    "es6-shim": "0.35.1",
    "ng2-bootstrap": "^1.0.17"
  },
  "devDependencies": {
    "angular-cli": "1.0.0-beta.6",
    "chai": "^3.5.0",
    "chai-as-promised": "^5.3.0",
    "codelyzer": "0.0.20",
    "cucumber": "^1.2.1",
    "ember-cli-inject-live-reload": "1.4.0",
    "jasmine-core": "2.4.1",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "0.13.22",
    "karma-chrome-launcher": "0.2.3",
    "karma-jasmine": "0.3.8",
    "protractor": "3.3.0",
    "protractor-cucumber-framework": "^0.6.0",
    "ts-node": "0.5.5",
    "tslint": "3.11.0",
    "typescript": "^1.8.10",
    "typings": "^1.0.5"
  }
}

我使用Angular-cli( https://github.com/angular/angular-cli )創建了我的項目,並嘗試關注https://github.com/samvloeberghs/protractor-gherkin-cucumberjs-angular2

我需要做一些額外的步驟,量角器會先編譯打字稿文件嗎? 或者我有什么遺失的?

主要問題是:

找不到命名空間'量角器'

你需要解決這個問題。 您需要全局或定義protractor

import {protractor} from 'protractor'

我不知道你的tsconfig.jssystem.config.js但你基本上必須啟用上面的tsc解析protractor模塊。

將打字稿更新到2.0+和量角器4.0+。 確保更新全局和本地版本。 將typescript更新為2.0應該修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM