Javascript Webdriver.io-Node.js意外令牌导入-页面对象
您好,我在使用Node.JS和Webdriver.io运行测试脚本时遇到问题。在我尝试实现页面对象模式之前,一切正常。在控制台输出时,我收到错误: 错误:意外的令牌导入 user/Desktop/webdriverio test/test/specs/first.js:2 从“../pom/GooglePage”导入GooglePage 节点版本:v8.9.1 GooglePage.js:Javascript Webdriver.io-Node.js意外令牌导入-页面对象,javascript,node.js,webdriver-io,Javascript,Node.js,Webdriver Io,您好,我在使用Node.JS和Webdriver.io运行测试脚本时遇到问题。在我尝试实现页面对象模式之前,一切正常。在控制台输出时,我收到错误: 错误:意外的令牌导入 user/Desktop/webdriverio test/test/specs/first.js:2 从“../pom/GooglePage”导入GooglePage 节点版本:v8.9.1 GooglePage.js: class GooglePage{ get submitButton(){ return browser
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")
})
})
一切都几乎与上一样:
为什么不能使用导入语法导入我的类来测试脚本?需要注意的几点: 1) 确保您传递的是 使能# --experimental modules标志可用于启用 加载ESM模块 一旦设置好,以.mjs结尾的文件将能够 作为ES模块加载 节点——实验模块my-app.mjs 2) 看起来ESM文件的扩展名是“.js”,应该是“.mjs”,就像“GooglePage.mjs”一样 3) 您似乎无法从CJS文件和vs导入ESM。因此,您必须将测试规范更改为“.mjs”文件,然后像这样导入依赖项:
import assert from 'assert';
import GooglePage from '../pom/GooglePage';
或者将其保留为“.js”,并要求依赖项作为CJ:
var assert = require('assert');
var GooglePage = require('../pom/GooglePage');
// Your module's content would be in GooglePage.default
希望有帮助 需要注意的几件事: 1) 确保您传递的是 使能# --experimental modules标志可用于启用 加载ESM模块 一旦设置好,以.mjs结尾的文件将能够 作为ES模块加载 节点——实验模块my-app.mjs 2) 看起来ESM文件的扩展名是“.js”,应该是“.mjs”,就像“GooglePage.mjs”一样 3) 您似乎无法从CJS文件和vs导入ESM。因此,您必须将测试规范更改为“.mjs”文件,然后像这样导入依赖项:
import assert from 'assert';
import GooglePage from '../pom/GooglePage';
或者将其保留为“.js”,并要求依赖项作为CJ:
var assert = require('assert');
var GooglePage = require('../pom/GooglePage');
// Your module's content would be in GooglePage.default
希望有帮助