点击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;
};
答案 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()
之后页面的状态发生了变化。