下面的场景是主页上表记录的给定元素的缓存(记住)值,点击此记录后断言在第二页上显示相同的内容。
我假设在回调之前完成测试。
情景:
syr x = a ! x , if already calculated and stored in the array
= 1 + syr y , storing the result in the array under x, if x <= n
= 1 + syr y , otherwise
where
y = ....
getTextPromise命令由我以下列方式定义:
var Q = require('q');
module.exports = {
beforeEach: function (browser) {
if (!browser.globals.isLocal) {
var loginSite = browser.page.loginSite();
loginSite.navigate();
loginSite.logIn();
}
var welcomePage = browser.page.welcomePage();
welcomePage.navigate();
welcomePAge.waitForElementVisible('@usersButton', browser.globals.firstLoadWaitInMs)
.click('@usersButton');
},
afterEach: function (browser, done) {
browser.end(function() {
done();
});
},
'should display same data on second page as on first page': function (browser) {
//Given
var firstPage = bowser.pages.first()
//When
Q.all([
firstPage.getTextPromise('@element1'),
firstPage.getTextPromise('@element2'),
firstPage.getTextPromise('@element3')]
).then( function(values) {
users.click('@linkToSecondPage');
//Then
var secondPage = browser.page.secondPage();
secondPage.expect.element('@dataElement1').text.to.equal(values[0]).before(5000);
secondPage.expect.element('@dataElemnet2').contains.text(values[1]);
secondPage.expect.element('@dataElement3').contains.text(values[2]);
});
} }
尝试使用commands: [{
getTextPromise: function(selector) {
var self = this;
return Q.Promise(function (resolve, reject) {
self.getText(selector, function(result) {resolve(result.value); });
});
} }]
库解决它 - 我的意思是将一些步骤打包到单独的函数中并按顺序运行但遇到问题,函数内部的所有内容都是本地函数,因此无法调用在下一个。