我有两个元素需要组合并使用标签字符串检查结果的问题。
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;
});