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

Wait until page is fully loaded with selenium and intern js

我正在尝试使用 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 。但是我不确定天气是否应该使用它。

pollUntil 在这里使用是个好东西,但看起来您实际上并没有在等待轮询完成。您的 setup 方法需要 return 包含 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 class 链传递给:

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

在这种情况下,Intern 不会等待设置完成,但您的 LoginPage 代码将隐式等待 setupPromise 完成,然后再执行任何其他操作。虽然这会奏效,但意图并不像前面的示例那样明确(例如,实习生应该等待某些设置过程完成后再继续)。