Protractor / js端到端测试使用异步命令在Promise之前停止执行

时间:2015-09-17 10:37:20

标签: javascript testing protractor e2e-testing

下面的场景是主页上表记录的给定元素的缓存(记住)值,点击此记录后断言在第二页上显示相同的内容。

我假设在回调之前完成测试。

情景:

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); }); }); } }] 库解决它 - 我的意思是将一些步骤打包到单独的函数中并按顺序运行但遇到问题,函数内部的所有内容都是本地函数,因此无法调用在下一个。

0 个答案:

没有答案