Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript for循环在量角器中不起作用_Javascript_For Loop_Protractor - Fatal编程技术网

Javascript for循环在量角器中不起作用

Javascript for循环在量角器中不起作用,javascript,for-loop,protractor,Javascript,For Loop,Protractor,如果td的第二个索引按预期包含文本(作为外部参数传递),我已使用下面的for循环单击td的第五个索引中的图标 我将行元素设置为tenantrowelments,并编写了以下代码 结果已达到,即单击了预期的按钮,但仍面临以下错误,并且未进入下一个方法 陈旧元素引用:元素未附加到页面文档 错误 this.clickEditOfTenant=函数(userobj){ console.log(“单击租户的编辑”); basePage.waitForElement(此.RenanTrowelments,

如果td的第二个索引按预期包含文本(作为外部参数传递),我已使用下面的for循环单击td的第五个索引中的图标

我将行元素设置为tenantrowelments,并编写了以下代码

结果已达到,即单击了预期的按钮,但仍面临以下错误,并且未进入下一个方法

陈旧元素引用:元素未附加到页面文档 错误

this.clickEditOfTenant=函数(userobj){
console.log(“单击租户的编辑”);
basePage.waitForElement(此.RenanTrowelments,5000);
this.tenantrowements.then(函数(租户){
日志(“元素长度:+tenants.length”);
对于(变量i=0;i
我怀疑
basePage.waitForElement(this.tenantrowelments,5000)不足以等待页面完全加载。因此,您在循环的第一次迭代中遇到了这个问题

basePage.waitForElement(this.tenantrowelments,5000)之后添加
browser.sleep(15000)
用于调试目的

您可以使用
filter()
简化代码:

this.clickEditOfTenant = function(userobj) {

  console.log("call clickEditOfTenant()");

  // basePage.waitForElement(this.tenantRowElements, 5000);

  browser.sleep(15000)

  this.tenantRowElements.filter(function(tr) {
    return tr.all(by.css('td')).get(1).getText().then(function(name) {
      return name === userobj.tname;
    });
  })
  .then(function(eles) {
    if(eles.length > 0) {
      eles[0].click();
    }
  })
  .then(function () {
    if(basePage.isVisible(updateTenant.tenantNameTxtBox)) {
      console.log("Edit button is clicked");
    }
  });
};

我已经编辑如下,现在它的工作

this.clickEditOfTenant = function(userobj) {
    console.log("call clickEditOfTenant()");
    basePage.waitForElement(this.tenantRowElements, 10000);

    //browser.sleep(15000);
    this.tenantRowElements.filter(function (tr) {
        return tr.all(by.css('td')).get(1).getText().then(function (name) {
            return name === userobj.tname;
        });
    }).then(function (eles) {
        eles[0].$$('td').then(function (btn) {
            //console.log(text);
            btn[5].click();
        }).then(function () {
            browser.sleep(5000);
            if (basePage.isVisible(updateTenant.tenantNameTxtBox)) {
                console.log("Edit button is clicked");
            }
        });
    });
};

是否可以找到多行租户名称与给定的
userobj.tname
相同?是。可以找到多行。但是,我仍然需要从eles获得第五个td,在那里我可以点击btn。我希望eles将返回选定的行。谢谢。不管怎样,我终于找到了解决办法
this.clickEditOfTenant = function(userobj) {
    console.log("call clickEditOfTenant()");
    basePage.waitForElement(this.tenantRowElements, 10000);

    //browser.sleep(15000);
    this.tenantRowElements.filter(function (tr) {
        return tr.all(by.css('td')).get(1).getText().then(function (name) {
            return name === userobj.tname;
        });
    }).then(function (eles) {
        eles[0].$$('td').then(function (btn) {
            //console.log(text);
            btn[5].click();
        }).then(function () {
            browser.sleep(5000);
            if (basePage.isVisible(updateTenant.tenantNameTxtBox)) {
                console.log("Edit button is clicked");
            }
        });
    });
};