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

时间:2019-01-16 22:11:18

标签: javascript jasmine protractor

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

 }

});

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

1 个答案:

答案 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

  }
});