如何在量角器中使用 ES6 类?

How to use ES6 classes in protractor?

我想在量角器测试中使用 ES6 classes。但是当我 运行 protractor conf.js 我在这条线上有 SyntaxError: Unexpected token export

export default class AngularHomePage {

此外,由于某些原因我无法使用 await/async,除了 SELENIUM_PROMISE_MANAGER: false 设置。

我可以使用这个语法吗,还是我遗漏了什么?

我试图将此 class 导入为 import AngularHomePage from './PageObject',但它给了我相同的 SyntaxError,但对于这一行。然后我使用const homePage = require('../Protractor demo/PageObject'),但它也不起作用。

这是我的 class 代码:

export default class AngularJsHomePage {
    constructor() {
        this.nameInput = element(by.model('yourName'))
        this.greeting = element(by.binding('yourName'))
    }

    async get () {
        await browser.get('http://www.angularjs.org')
    }

    async setName (name) {
        await this.nameInput.sendKeys(name)
    }

    async getGreetingText () {
        return await this.greeting.getText()
    }

    getGreeting () {
        return this.greeting
    }
}

这是我的spec.js代码

// import { element, by, browser } from "protractor"
// import AngularJsHomePage from "./PageObject"
const homePage = require('../Protractor demo/PageObject')

describe('Angular homepage', function() {
    it('should greet the named user', function() {
        const page = new homePage()

        await page.get()

        await page.setName('Julie')

        expect(await page.getGreetingText()).toEqual('Hello Julie')
    })
})

您需要使用名为 babel.
的 npm 它用于将 ECMAScript 2015 和更新版本的 JS 转换为向后版本。

  1. npm install babel-register
  2. npm install babel-preset-env
  3. 在您的 protractor.conf.js 文件中:
onPrepare: () => {
    require("babel-register");
} 
  1. 在您的主项目文件夹中创建一个名为 .babelrc
  2. 的文件
{
    "presets": ["env"]
}

您可以阅读有关 Babel 的更多信息 here
也许你需要安装更多的 babel 包,这取决于你使用的版本。