量角器:在 getText() 函数之外保留变量

Protractor: preserve variable outside getText() function

我想在 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? 中没有回答。

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

你的做法是正确的。有一个全局变量来保存要比较的值。但是在 getText().

的链式承诺中有赋值代码
it(...
        page.numberOfAllLines.getText().then(function(num) {
            numberOfLines = num;
            newNumberOfLines = numberOfLines + 10;
        });  

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