Javascript 合并文本并将其用作量角器中的变量
我正在尝试组合两个字符串“globalVariables.EditButton_”&值“I”,并将该字符串(例如“globalVariables.EditButton_1”)作为变量传递,该变量应引用我们存储为全局变量的按钮元素。下面是我的代码,但它不起作用。错误是 “信息: 失败:Button.isDisplayed不是函数堆栈: TypeError:Button.isDisplayed不是函数“ 代码段: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'
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]