javascript - 尝试从js中的另一个文件调用变量时出错

标签 javascript protractor

我正在使用页面对象模型。因此每个 page.js 文件都包含一个变量 url 和“AddButtonId”。我通过传递 pageName 和 elementID 来调用该函数来启动页面。

页面.js

module.exports = {
    e: {
        url: 'http://localhost:4200/',
        AddButtonId: 'addButton',

},
};

函数定义:

urlCall: function (pageName) {
          return  browser.get(pageName+".e.url");
        },

clickButton: function(pageName,elementID){
             var x = pageName+".e."+elementID;
             element(by.id(x)).click();
            },

这里我在调用函数时传递 pageName 和 ID。

    urlcall(page);

    clickButton(page, AddButtonId);

但是 browser.get() 尝试加载“pageName.e.url”,而不是从页面对象文件中获取变量值 ( http://localhost:4200/ )。 它不是在“clickButton”函数中传递“addButton”,而是传递“page.e.AddButtonId”并失败并显示错误“NoSuchElementError:使用定位器找不到元素:By(css选择器,* [id =“page.e.AddButtonId”) “])”

最佳答案

我认为您需要通过使用传入的 pageName 来获取导入文件路径来导入页面对象。

//pageA.js

module.exports = {
    e: {
        url: 'http://localhost:4200/',
    },
    ...
};

//函数:urlCall

urlCall: function (pageName) {
  // you need to import the page object.
  var page = require(pageName+'.js');
  var x = page.e.url;
  browser.get(x);
},

//函数clickButton

clickButton: function(pageName,elementID){
    var page = require(pageName+'.js');
    var x = page.e[elementID];
    element(by.id(x)).click();
},

//test.js

urlCall('pageA')

关于javascript - 尝试从js中的另一个文件调用变量时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49551935/

相关文章:

javascript - 在 ng-repeat 中调用一个函数

angular - Protractor 测试中的异步/等待逻辑未检测到页面元素

javascript - BeforeFeature Hook 获取功能名称

angularjs - BeforeAll 未定义(老 Jasmine )

javascript - 检查 html 元素是否用 Protractor 显示

javascript - 滚动到列表底部后,angularjs-ui-grid 有额外的空白

javascript - 为什么 Firefox 更新后 JQuery 无法在我的 MVC 4 应用程序中运行?

javascript - 更改模板动态

javascript - 如何从 promise.then() 中调用对象的方法?

node.js - 使用 Protractor/saucelabs 禁用 [启动器] 输出