等到页面完全加载了selenium和intern js

时间:2017-01-14 20:01:33

标签: selenium wait intern

我正在尝试使用实习生js创建UI自动化测试,但是我在等待页面完全加载时遇到问题。我的代码在加载页面之前开始搜索元素。有人可以帮我解决这个问题。

我的代码:

define([
'intern!object',
'intern/chai!assert',
'Automation/ConfigFiles/dataurl',
'Automation/pages/login/loginpage',
'intern/dojo/node!fs',
'intern/dojo/node!leadfoot/helpers/pollUntil'
 ], function (registerSuite, assert,dataurl, LoginPage,fs,pollUntil) {
registerSuite(function () {
    var loginPage;
    var values;
    return {

        setup: function () {
            var data = fs.readFileSync(loginpage, 'utf8');
            json=JSON.parse(data);
            console.log('###########Setting Up Login Page Test##########')
            this.remote
                .get(require.toUrl(json.locator.URL))
           .then(pollUntil(this.remote.findById('uname').isDisplayed(),6000)// here i want to wait until page is loaded
        .waitForDeletedByClassName('loading').end().sleep(600000)// here i want to wait until loading component is disappered



            values = json.values;
            loginPage = new LoginPage(this.remote,json.locator);

        },

        'successful login': function () {
            console.log('##############Login Success Test############')
            return loginPage
                .login(values.unamevalue,values.pwdvalue)

        },

        // …additional tests…
    };
  });
});

我正在尝试使用pollUntil。但我不确定天气是否应该使用它。

1 个答案:

答案 0 :(得分:0)

pollUntil在这里使用是一件好事,但它看起来并不像是在等待轮询完成。您的setup方法需要返回包含pollUntil的命令链,以便Intern知道它需要等待,例如:

var setupPromise = this.remote
    .get(require.toUrl(json.locator.URL))...
values = json.values;
loginPage = new LoginPage(this.remote, json.locator);
return setupPromise;

或者,您可以将您的LoginPage类传递给链:

var setupPromise = this.remote
    .get(require.toUrl(json.locator.URL))...
values = json.values;
loginPage = new LoginPage(setupPromise, json.locator);

在这种情况下,实习生不会等待设置完成,但您的LoginPage代码将隐式等待setupPromise完成,然后再做其他事情。虽然这样可行,但意图并不像前面的例子那样清晰(例如,实习生应该等待一些设置过程在继续之前完成)。