Javascript 如何从量角器中的输入元素而不是promise中获取作为文本的值
当我在StackOverflow中搜索时,我得到了多个从输入元素获取值的解决方案 我尝试了以下几种方法 方法1:Javascript 如何从量角器中的输入元素而不是promise中获取作为文本的值,javascript,protractor,Javascript,Protractor,当我在StackOverflow中搜索时,我得到了多个从输入元素获取值的解决方案 我尝试了以下几种方法 方法1: return serialNumberTextField.getAttribute('ng-model') .then((text)=>{return serialNumberTextField.evaluate(text);}) .then((evalText) =>{ console.log("seri
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;})
在这两种方法中打印时,它会打印精确的值
例如:
方法1:评估方法中的序列号:assetDF1534
方法2:方法assetDF1534中的序列号
我在两个地方使用了返回值
第一位:“assetName”变量是从上述方法获取序列号的捕获
assetNameTextField.clear().sendKeys(assetName);
第二名:
element(by.xpath("//a[contains(text(),'"+ assetName+"')]")).click();
首先,它工作正常,并在assetname文本字段中输入值“assetDF1534”,但在使用资产名称创建web元素时失败,因为它将“assetname”作为承诺而不是值。当我在以下显示为promise的方法中打印“assetName”时:
要在筛选器中输入的资产名称是:ManagedPromise::2239{[[PromiseStatus]]:“Completed”}
资产名称为:ManagedPromise::2239{[[PromiseStatus]]:“已完成”}
Sendkeys处理promise,因为它是一个量角器方法,但在另一种情况下不是。如何获取值而不是承诺?您需要解析承诺而不是返回承诺。这应该行得通
function getSerialNumber() {
return new Promise((resolve, reject) => {
serialNumberTextField.getAttribute('value').then((text) => {
resolve(text);
})
.catch((err) => {
reject(err);
});
});
}
找到如下解决方案: 函数定义
this.getSerialNumber = function()
{
return serialNumberTextField.getAttribute('value')
.then( (text) =>{ return text; })
};
函数调用
this.editAsset = async function(data)
{
this.getSerialNumber()
.then( (serialNumber) =>{
data.serialNumber = serialNumber;
});
}
使用
.then()
将从getSerialNumber()
返回的值分配给该值。我们可以使用.then()
来解决这个问题。您好,感谢您的时间和回答。当我尝试上述解决方案时,在(resolve,reject)
和大括号结束后,我遇到了一个编译错误。我忘了=>部分。我编辑了上面的代码片段。这次应该有用。