TypeError:元素(..).then不是Protractor 3.2.1中的函数

TypeError: element(...).then is not a function in Protractor 3.2.1

本文关键字:函数 Protractor 不是 元素 then TypeError      更新时间:2023-09-26

我使用了以下代码

element(by.xpath("//tf-navpane-item[contains(@class,'tf-state-selected')]//tf-navpane-item-text//*[contains(@class,'ng-binding')]")).then(function(ele){
            ele.getText().then(function(txt){
                console.log("txt: "+txt);
            });
        }); 

当我使用Protractor 1.0时,这个代码曾经工作得很好。在将Protractor升级到3.2.1之后,我开始出现以下错误。

TypeError:元素(…).然后不是函数

我可能错过了什么,但不确定是什么。

是的,这是你应该预料到的,因为element()不能再直接用then()解决了(打破了Protractor 2.0中的变化)

var elm = element(by.xpath("//tf-navpane-item[contains(@class,'tf-state-selected')]//tf-navpane-item-text//*[contains(@class,'ng-binding')]"));
elm.getText().then(function(txt) {
    console.log("txt: " + txt);
});

请注意,如果您需要断言文本,您可以将getText()传递给expect()——它了解什么是承诺,并在做出期望之前解决它:

expect(elm.getText()).toEqual("Expected text");