2017-11-29 5 views
0

안녕하세요 Node.JS 및 Webdriver.io를 사용하여 테스트 스크립트를 실행하는 데 문제가 있습니다. 페이지 객체 패턴 구현을 시도 할 때까지 모든 것이 잘 작동했습니다.Webdriver.io - Node.js 예기치 않은 토큰 가져 오기 - 페이지 객체

ERROR: Unexpected token import

user/Desktop/webdriverio-test/test/specs/first.js:2

import GooglePage from '../pom/GooglePage';

노드 버전 : v8.9.1

GooglePage.js :

class GooglePage{ 

get submitButton(){ return browser.element(`[name="btnK"]`);} 

get searchField(){return browser.element('#lst-ib');} 

open(){ 
    browser.open("http://google.com"); 
} 

submit(){ 
    this.submitButton.click(); 
} 

setValue(text){ 
    this.searchField.setValue(text); 
} 
} 
export default new GooglePage(); 

그리고 테스트 스크립트가 :

var assert = require('assert'); 
import GooglePage from '../pom/GooglePage'; 

describe('Visiting Google by PageObjectPattern',()=>{ 
it('Open Google',()=>{ 
    GooglePage.open(); 
    GooglePage.setValue("asdasd") 
    }) 
    }) 

모든 것이 거의이다 콘솔 출력에 나는 오류가 발생 동일 항목 : http://webdriver.io/guide/testrunner/pageobjects.html

가져 오기 구문을 사용하여 내 클래스를 테스트 스크립트로 가져올 수없는 이유는 무엇입니까? 사물의

답변

1

커플주의해야 :

1) enables ESM support in Node 8.5+

Enabling#

The --experimental-modules flag can be used to enable features for loading ESM modules.

Once this has been set, files ending with .mjs will be able to be loaded as ES Modules.

node --experimental-modules my-app.mjs

2)이 ESM 파일의 확장자가 "의 .js"이고해야 아닌 것으로 보인다 플래그를 전달하고 있는지 확인 "GooglePage.mjs"처럼 ".mjs"가되어야합니다.

3) 또한 당신이 ".mjs"파일로 테스트 사양을 변경해야 하나 그래서 CJS 파일 및 대에서 ESM을 가져, 그래서처럼 종속성을 가져올 수 없습니다 나타납니다 :

import assert from 'assert'; 
import GooglePage from '../pom/GooglePage'; 

또는 "의 .js"로 유지하고 CJS으로 의존성이 필요합니다 도움이

var assert = require('assert'); 
var GooglePage = require('../pom/GooglePage'); 

// Your module's content would be in GooglePage.default 

희망!

관련 문제