量角器给出 {[[承诺状态]]:"pending" } 错误



我有两个元素需要组合并使用标签字符串检查结果的问题。

    firstName = element(by.model("emergencyContactObject.firstName"));
    lastName = element(by.model("emergencyContactObject.lastName"));
    firstName.clear().sendKeys("firstName");
    lastName.clear().sendKeys("lastName");
    firstNameText = firstName.getText().then(function(fnm){
        return fnm;
    });
    browser.wait(firstNameText);
    lastNameText = lastName.getText().then(function(lnm){
        return lnm;
    });
    browser.wait(lastNameText);
    nameText = firstNameText+' '+lastNameText;
    var nameH3 = element(by.css('h3'));
    expect(nameH3.getText()).toBe(nameText);

量角器给出以下错误:

期望'frstname lastname'为'managedPromise :: 7999 {[[[Promisestatus]]:"待处理"} ManagedPromise :: 8021 {[[[Promisestatus]]:" perdend'}'}'}'

问题是browser.wait();无法解决您的承诺,从then返回仍然会返回承诺而不是承诺的结果。不幸的是,您必须包装多个then(),因为您有多个变量。

firstName.getText().then(function(fnm){
        lastName.getText().then(function(lnm){
            firstNameText = fnm;
            lastNameText = lnm;
            nameText = firstNameText + ' ' + lastNameText;
            var nameH3 = element(by.css('h3'));
            expect(nameH3.getText()).toBe(nameText);
        });
    });

另外,您可以使用async/await,但必须标记您的功能async

 var firstNameText = await firstName.getText();
 var lastNameText = await lastName.getText();
 var nameText = firstNameText + ' ' + lastNameText;  
 var nameH3 = element(by.css('h3'));
 expect(nameH3.getText()).toBe(nameText);
我相信,

您的问题与代码的这一部分有关,在其中您向变量" firstNemetext"分配了承诺,而不是分配该诺言的结果:

firstNameText = firstName.getText().then(function(fnm){
    return fnm;
});

尝试:

var firstNameText;    
firstName.getText().then(function(fnm){
    firstNameText = fnm;
});

相关内容

最新更新