【问题标题】:Printing text from a Protractor repeater从量角器中继器打印文本
【发布时间】:2013-11-15 04:05:06
【问题描述】:

我有以下运行良好的 e2e 测试:

            var results = ptor.findElements(protractor.By.
                     repeater('phone in phones').column('phone.name'));
            results.then(function(arr) {
             expect(arr.length).toEqual(2);
        });

我想要一个测试来检查结果文本,而不是计数/长度,例如:

expect(repeater('.phones li', 'Phone List').column('phone.name')).
      toEqual(["Motorola XOOM\u2122 with Wi-Fi",
               "MOTOROLA XOOM\u2122"]);

但使用量角器语法,我尝试了以下但没有成功:

var results = ptor.findElements(protractor.By.
                 repeater('phone in phones').column('phone.name'));
        results.then(function(arr) {
         expect(arr.getText()).toEqual(....);
    });

但我得到一个 no method getText() 错误。 获取“arr”数组中文本的方法是什么?

这行得通:

            ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'))
            .then(function(arr) {
                arr[0].getText().then(function(text) {
                    console.log("*** first: "+text);

                });
                arr[1].getText().then(function(text) {
                    console.log("*** second: "+text);

                    done();
                })
            });

【问题讨论】:

    标签: angularjs-ng-repeat protractor


    【解决方案1】:

    问题在于您链接方法的方式。元素查找只是带回 WebElement。你真正追求的是 getText() 返回的 promise 对象。如果您想在承诺解决后对文本执行某些操作,则需要将“then”调用链接到 getText() 调用的末尾。所以而不是:

    results.then(function(arr) {
         expect(arr.getText()).toEqual(....);
    });
    

    你实际上想要这样的东西:

    results.getText().then(function(resultText) {
         expect(resultText).toEqual(....);
    })
    

    【讨论】:

    • 我所做的最后一次编辑在某种程度上有效,但它得到了整行,而不仅仅是“phone.name”。所以现在我想弄清楚如何只让 phone.name 显示在 arr[0].getText() 中,而不是整行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 2016-03-30
    • 2017-02-09
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多