我正在使用页面对象模型。因此每个 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/