Javascript 如何从量角器中的输入元素而不是promise中获取作为文本的值

Javascript 如何从量角器中的输入元素而不是promise中获取作为文本的值,javascript,protractor,Javascript,Protractor,当我在StackOverflow中搜索时,我得到了多个从输入元素获取值的解决方案 我尝试了以下几种方法 方法1: return serialNumberTextField.getAttribute('ng-model') .then((text)=>{return serialNumberTextField.evaluate(text);}) .then((evalText) =>{ console.log("seri

当我在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;})
在这两种方法中打印时,它会打印精确的值 例如: 方法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)
大括号结束后,我遇到了一个编译错误。我忘了=>部分。我编辑了上面的代码片段。这次应该有用。