当我在StackOverflow中搜索时,我有多种解决方案可以从输入元素中获取值。
我尝试了以下方法
方法1:
return serialNumberTextField.getAttribute('ng-model')
.then((text)=>{return serialNumberTextField.evaluate(text);})
.then((evalText) =>{ console.log("serial number in eval method :"+evalText);
return evalText;})
方法2:
return serialNumberTextField.getAttribute('value')
.then( (text) =>{
console.log("serial number in method :"+text);
return text;})
使用两种方法打印时,它会打印出确切的值 例如:- method1:eval中的序列号方法:assetDF1534 method2:方法:assetDF1534
中的序列号我在两个地方使用了返回值
第一名:'assetName'变量是通过上述方法获取的序列号。
assetNameTextField.clear().sendKeys(assetName);
第二名:
element(by.xpath("//a[contains(text(),'"+ assetName+"')]")).click();
首先,它运行良好,并在assetname文本字段中输入值'assetDF1534',但是在使用资产名称创建Web元素时失败了,因为它使用的是'assetName'作为承诺而不是价值。当我在显示为promise的那些方法中打印“ assetName”时,如下所示:
在过滤器中输入的资产名称是:ManagedPromise :: 2239 {[[PromiseStatus]]:“已完成”} 资产名称为:ManagedPromise :: 2239 {[[PromiseStatus]]:“已完成”}
Sendkeys处理了promise,因为它是一个量角器方法,但在另一种情况下则不是。如何获得价值而不是承诺?
答案 0 :(得分:1)
您需要解决承诺而不是退还承诺。这应该起作用。
function getSerialNumber() {
return new Promise((resolve, reject) => {
serialNumberTextField.getAttribute('value').then((text) => {
resolve(text);
})
.catch((err) => {
reject(err);
});
});
}
答案 1 :(得分:0)
找到如下解决方案:
功能定义
this.getSerialNumber = function()
{
return serialNumberTextField.getAttribute('value')
.then( (text) =>{ return text; })
};
函数调用
this.editAsset = async function(data)
{
this.getSerialNumber()
.then( (serialNumber) =>{
data.serialNumber = serialNumber;
});
}
使用getSerialNumber()
将从.then()
返回的值分配给该值。我们可以使用.then()