如何从量角器中的输入元素而不是承诺中获取文本值
How to get as text value from input element in protractor instead of promise
当我在 Whosebug 中搜索时,我得到了多种解决方案来从输入元素中获取值。
我尝试了下面的方法
方法一:
return serialNumberTextField.getAttribute('ng-model')
.then((text)=>{return serialNumberTextField.evaluate(text);})
.then((evalText) =>{ console.log("serial number in eval method :"+evalText);
return evalText;})
方法二:
return serialNumberTextField.getAttribute('value')
.then( (text) =>{
console.log("serial number in method :"+text);
return text;})
当用这两种方法打印时,它打印出准确的值
例如:-
method1:eval方法中的序列号:assetDF1534
方法2:方法中的序列号:assetDF1534
我在两个地方使用了 return 值
第一名:'assetName'变量是从上面的方法中catch得到序列号的
assetNameTextField.clear().sendKeys(assetName);
第二名:
element(by.xpath("//a[contains(text(),'"+ assetName+"')]")).click();
首先,它工作正常并在资产名称文本字段中输入值 'assetDF1534' 但是当使用资产名称创建 Web 元素时失败了,因为它给出了 'assetName' 作为承诺的价值。当我在那些显示为承诺的方法中打印 'assetName' 时,如下所示:
要在过滤器中输入的资产名称是:ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"}
资产名称是:ManagedPromise::2239 {[[PromiseStatus]]:"fulfilled"}
Sendkeys 处理 promise,因为它是一种量角器方法,但在另一种情况下则不然。如何获取价值而不是承诺?
您需要解决 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;
});
}
getSerialNumber()
中的值 return 已分配给使用 .then()
的值。我们可以使用 .then()
解决承诺
当我在 Whosebug 中搜索时,我得到了多种解决方案来从输入元素中获取值。
我尝试了下面的方法
方法一:
return serialNumberTextField.getAttribute('ng-model')
.then((text)=>{return serialNumberTextField.evaluate(text);})
.then((evalText) =>{ console.log("serial number in eval method :"+evalText);
return evalText;})
方法二:
return serialNumberTextField.getAttribute('value')
.then( (text) =>{
console.log("serial number in method :"+text);
return text;})
当用这两种方法打印时,它打印出准确的值 例如:- method1:eval方法中的序列号:assetDF1534 方法2:方法中的序列号:assetDF1534
我在两个地方使用了 return 值
第一名:'assetName'变量是从上面的方法中catch得到序列号的
assetNameTextField.clear().sendKeys(assetName);
第二名:
element(by.xpath("//a[contains(text(),'"+ assetName+"')]")).click();
首先,它工作正常并在资产名称文本字段中输入值 'assetDF1534' 但是当使用资产名称创建 Web 元素时失败了,因为它给出了 'assetName' 作为承诺的价值。当我在那些显示为承诺的方法中打印 'assetName' 时,如下所示:
要在过滤器中输入的资产名称是:ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"} 资产名称是:ManagedPromise::2239 {[[PromiseStatus]]:"fulfilled"}
Sendkeys 处理 promise,因为它是一种量角器方法,但在另一种情况下则不然。如何获取价值而不是承诺?
您需要解决 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;
});
}
getSerialNumber()
中的值 return 已分配给使用 .then()
的值。我们可以使用 .then()