Javascript 合并文本并将其用作量角器中的变量

Javascript 合并文本并将其用作量角器中的变量,javascript,jasmine,protractor,Javascript,Jasmine,Protractor,我正在尝试组合两个字符串“globalVariables.EditButton_”&值“I”,并将该字符串(例如“globalVariables.EditButton_1”)作为变量传递,该变量应引用我们存储为全局变量的按钮元素。下面是我的代码,但它不起作用。错误是 “信息: 失败:Button.isDisplayed不是函数堆栈: TypeError:Button.isDisplayed不是函数“ 代码段: it('should show the same data in both Page'

我正在尝试组合两个字符串“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

 }

});
it('应在两个页面中显示相同的数据',函数(){
变量行计数=
globalVariables.tableData_Dashboard.all(按.tagName(“tr”)).count()-1;
对于(变量i=1;i

在这种情况下,如何添加两个字符串并将其用作变量

在上面的代码段中,
globalVariables.tableData\u Dashboard.all(by.tagName(“tr”)).count()返回一个值。所以当你把这些加在一起的时候,你就是在给一个int和一个int加上一个承诺。接下来看起来很奇怪的事情是:
var-Button='globalVariables.Edit_-Button_'+i这不会作为elementFinder进行计算。我同意杨在上面的评论,你应该使用
globalVariables['Edit_Button_'+I]

使用异步/等待 所以我将用async/await和关闭控制流来回答这个问题。这是使用配置文件中设置的
SELENIUM\u PROMISE\u 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

  }
});
it('应该在两个页面中显示相同的数据',async()=>{
常量行计数=
(wait globalVariables.tableData_Dashboard.all(by.tagName(“tr”)).count())-1;
对于(变量i=1;i
应该是
var-Button=globalVariables['Edit\u-Button\u'+i]