javascript - 不是 Protractor POM 中的函数错误

标签 javascript angular protractor

我是 Protractor 的新手,我一直在尝试用 POM 做一个示例项目。我在 spec.js 中有我的页面对象和函数,并尝试在 additionTest.js 中访问它,但我得到了

spec.clickGoButton is not a function

我的代码结构如下所示

规范.js

   var spec=function(){
   this.goButton=element(by.id(goButton));
   this.clickGoButton=function(){
   this.goButton.click();
    };

module.exports= spec;

加法测试.jp

   var spec = require('./spec.js');

   function add(a, b) {
    spec.clickGoButton();
   }

我收到错误消息,因为 spec.clickGoButton 不是一个函数

最佳答案

假设 spec.js 正在正确导出 spec - 它正在导出一个 class,这意味着用 new 调用 在消费模块中。在使用它的方法之前,你需要创建一个新的实例化:

const Spec = require('./spec.js');
const mySpec = new Spec();
function add(a, b) {
  mySpec.clickGoButton();
}

但是您真的需要上课吗?您可以只在 spec.js 中导出一个对象,然后在不实例化的情况下使用它:

const spec = {
  goButton: element(by.id(goButton)),
  clickGoButton: function(){
    this.goButton.click();
  },
};

关于javascript - 不是 Protractor POM 中的函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49935992/

相关文章:

javascript - Reactjs 使用数组动态调用选项卡面板下有卡片的组件

javascript - "single source of truth"是什么意思?

javascript - Angular CDKScrollable 未触发

angular - 传递给 ngclass 枚举字符串值

javascript - 从 Protractor 执行一个方法并获取返回值

javascript - Protractor by.repeater 命令中是否存在错误

javascript - 从数组 React 中过滤过期的卡片

javascript - 使用 vuex 中的突变隐藏段落?

angular - 如何使用多个参数在angular5中发送POST?

javascript - 无法从 Node.js 命令提示符运行 Protractor