2017-03-08 33 views
1

我想保留getText()函数以外的变量,这样我就可以将它与测试中的值相匹配。例如:量角器:在外部保存变量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?回答。

回答

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); 
+0

我还是这么一个小菜。谢谢,这解决了我的问题! – jurijk

+0

是的..异步总是很棘手:) – AdityaReddy

+0

你知道我怎样才能在这个例子中乘以getText()函数的值: 'page.numberOfAllLines.getText()。then(function(num){ \t numberOfLines = # }); page.winPrice.getText()。then(function(price){ \t cost = price; }); priceSum = numberOfLines * cost; expect(page.tableCell.getText())。toEqual(priceSum);'这是否可能是由于Protractor的异步性质? – jurijk