我正在尝试组合两个字符串“ globalVariables.EditButton_”和值'i',并将该字符串(例如“ globalVariables.EditButton_1”)作为变量传递,该变量应引用我们作为全局变量存储的按钮元素。下面是我的代码,但是它不起作用。错误是
”消息: 失败:Button.isDisplayed不是函数堆栈: TypeError:Button.isDisplayed不是函数“
代码段:
it('should show the same data in both Page' , function(){
var RowCount=
globalVariables.tableData_Dashboard.all(by.tagName("tr")).count() -1;
for (var i=1; i < RowCount; ++i){
var Button = 'globalVariables.Edit_Button_'+i;
expect(Button.isDisplayed());
// do something
}
});
在这种情况下,如何添加两个字符串并将其用作变量?
答案 0 :(得分:1)
在上面的代码段中,您的globalVariables.tableData_Dashboard.all(by.tagName("tr")).count()
返回一个promise。因此,当您将它们加在一起时,就向一个int和一个int添加了promise。下一件事看起来很奇怪:var Button = 'globalVariables.Edit_Button_'+i;
不会作为elementFinder进行评估。我同意yong在上面的评论中应使用globalVariables['Edit_Button_'+i];
因此,我将使用async / await回答这个问题,并且控制流已关闭。这是在您的配置文件中设置的SELENIUM_PROMISE_MANAGER: false,
。
it('should show the same data in both Page' , async () => {
const RowCount=
(await globalVariables.tableData_Dashboard.all(by.tagName("tr")).count()) - 1;
for (var i=1; i < RowCount; ++i){
const button = globalVariables['Edit_Button_'+i];
expect(await button.isDisplayed());
// do something
}
});