【问题标题】:How to get as text value from input element in protractor instead of promise如何从量角器中的输入元素而不是承诺中获取文本值
【发布时间】:2019-12-13 00:12:02
【问题描述】:

当我在 StackOverflow 中搜索时,我得到了多种解决方案来从输入元素中获取值。

我尝试了以下方法

方法一:

 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;})

当在这两种方法中打印时,它会打印出准确的值 例如:- 方法1:评估方法中的序列号:assetDF1534 方法2:方法中的序列号:assetDF1534

我在两个地方使用了返回值

第一名:'assetName'变量是从上面的方法中catch得到序列号的。

assetNameTextField.clear().sendKeys(assetName);

第二名:

element(by.xpath("//a[contains(text(),'"+ assetName+"')]")).click();

首先,它运行良好并在资产名称文本字段中输入值“assetDF1534”,但是使用资产名称创建 Web 元素时失败,因为它将“资产名称”作为承诺而不是值。当我在那些显示为承诺的方法中打印“资产名称”时,如下所示:

要在过滤器中输入的资产名称是 :ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"} 资产名称是 :ManagedPromise::2239 {[[PromiseStatus]]: "fulfilled"}

Sendkeys 处理了 Promise,因为它是量角器方法,但不是在其他情况下。如何获取价值而不是承诺?

【问题讨论】:

    标签: javascript protractor


    【解决方案1】:

    你需要解决 promise 而不是返回它。这应该可以。

    function getSerialNumber() {
      return new Promise((resolve, reject) => {
        serialNumberTextField.getAttribute('value').then((text) => {
            resolve(text);
          })
          .catch((err) => {
            reject(err);
          });
      });
    }
    

    【讨论】:

    • 您好,感谢您的宝贵时间和回答,当我尝试上述解决方案时,在(resolve, reject)braces 结束后出现编译错误
    • @SaradaAkurathi 对此感到抱歉。我忘记了 => 部分。我编辑了上面的代码 sn-p。这次应该可以了。
    【解决方案2】:

    找到如下解决方案:

    函数定义

    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()来解决promise

    【讨论】:

      猜你喜欢
      • 2020-04-23
      • 2021-01-29
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 2020-05-13
      相关资源
      最近更新 更多