从UI-select下拉列表中单击选项时,我将获得过时的元素引用

时间:2016-08-04 16:18:56

标签: angularjs protractor

点击UI-select下拉列表中的选项时,我得到过时的元素引用。

下面是供您参考的代码。 Plz在这个问题上帮助我。

//从UI中选择原点 - 选择列表

this.select_sli_origin= function(origin)
   {   console.log(" origin value : " +origin);

       element(by.model(sli_locators.ori_sli_model)).click();

       browser.sleep(2000);

       element.all(by.repeater(sli_locators.ori_sli_repeater)).then(function (items) {
                  items.forEach(function (item) {

                item.getText().then(function (text) {
                    console.log("Service list :" + text);
                    if (text.substr(-3) == origin) {
                        item.click();
                    }
                });

            });
        });

       return this;
};

1 个答案:

答案 0 :(得分:1)

根据我的理解,您需要从转发器中过滤单个项目以进一步点击。您不应该在此使用forEach()each(),您需要filter()

var items = element.all(by.repeater(sli_locators.ori_sli_repeater));
var desiredItem = items.filter(function (item) {
   return item.getText().then(function (text) {
       return text.substr(-3) === origin;
   });
}).first();
desiredItem.click();

仅供参考,使用Selenium时,陈旧元素参考错误非常常见。在您的情况下,在调用item.getText()时会抛出它,因为在上一次迭代发出item.click()之后页面的状态发生了变化。