【问题标题】:Protractor: preserve variable outside getText() function量角器:在 getText() 函数之外保留变量
【发布时间】:2017-03-08 08:25:52
【问题描述】:

我想在 getText() 函数之外保留变量,以便我可以将它与测试中的值匹配。示例:

页面对象文件:

this.numberOfAllLines = element(by.id('all_lines'));
this.tableCell = element(by.css('.table_results_lines'));
this.sumOfAllLinesText = element(by.id('sum_lines'));

规格文件:

var numberOfLines = '';
var newNumberOfLines = '';

describe(...
    it(...
        page.numberOfAllLines.getText().then(function(num) {
            numberOfLines = num;
        });

        newNumberOfLines = numberOfLines + 10;

        expect(page.tableCell.getText()).toEqual(newNumberOfLines);

        // doing some clicks

        expect(page.sumOfAllLinesText.getText()).toEqual(newNumberOfLines);
    });
});

How do I return the response from an asynchronous call? 没有回答。

【问题讨论】:

    标签: function variables protractor gettext preserve


    【解决方案1】:

    这段代码newNumberOfLines = numberOfLines + 10 是异步的,甚至会在numberOfLines = num; 的赋值发生之前执行。

    你所做的是正确的。有一个保存要比较的值的全局变量。但是在 getText() 的链式承诺中包含分配代码。

    it(...
            page.numberOfAllLines.getText().then(function(num) {
                numberOfLines = num;
                newNumberOfLines = numberOfLines + 10;
            });  
    
            expect(page.tableCell.getText()).toEqual(newNumberOfLines);
    

    【讨论】:

    • 我还是个菜鸟。谢谢,这解决了我的问题!
    • 你知道在这个例子中我怎样才能将 getText() 函数的值相乘:page.numberOfAllLines.getText().then(function(num) { numberOfLines = num; }); page.winPrice.getText().then(function(price) { cost = price; }); priceSum = numberOfLines * cost; expect(page.tableCell.getText()).toEqual(priceSum); 由于 Protractor 的异步特性,这甚至可能吗?
    • 把这个 - priceSum = numberOfLines * cost 放在第二个 getText().then()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多