【问题标题】:Protractor promise return string to compare with value量角器承诺返回字符串以与值进行比较
【发布时间】:2016-08-09 15:12:19
【问题描述】:

我正在使用量角器来测试 AngularJS 网站。我需要一些量角器函数来返回一个承诺值,以便以正确的方式继续我的代码。

特别是,我需要从输入中获取值并将其与某个常数进行比较。试过这种方式:

    var p1 = new Promise(function (resolve, reject) {

        if (element(by.id('policyNumber')).getAttribute('value') == parameter.getJinyDotazParams().attributes.policyNumber) {
            resolve("Success");
        } else {
            reject("Error");
        }
    });

    p1.then(function (value) {
        console.log(value + 'yaaay'); // Success!
    }, function (reason) {
        console.log(reason + 'Q_Q'); // Error!
    });

例如,使用布尔返回一切正常:

    var p1 = new Promise(function (resolve, reject) {

        if (element(by.id('policyNumber')).isDisplayed()) {
            resolve("Success");
        } else {
            reject("Error");
        }

        //resolve("Success!");
        // or
        //reject("Error!");
    });

    p1.then(function (value) {
        console.log(value + 'yaaay'); // Success!
    }, function (reason) {
        console.log(reason + 'Q_Q'); // Error!
    });

【问题讨论】:

    标签: javascript jasmine promise protractor e2e-testing


    【解决方案1】:

    如果你使用 Jasmine 框架,那么你可以使用 expect() 方法来验证一个 Promise 的输出。例如,

    var displayedValue =element(by.id('policyNumber')).getAttribute('value')
    var actualValue = parameter.getJinyDotazParams().attributes.policyNumber
    expect(displayedValue).toEqual(actualValue)
    

    【讨论】:

    • 当然,但我想在我的代码中继续输入值。
    【解决方案2】:

    没想到,竟然这么简单..

    element(by.id('policyNumber')).getAttribute('value').then(function (val) {
        if (val == parameter.getJinyDotazParams().attributes.policyNumber) {
            console.log('YAAAAY!');
        }
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 2021-09-04
      • 2015-10-25
      • 1970-01-01
      • 2018-07-24
      相关资源
      最近更新 更多