等到页面完全加载 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 完成,然后再执行任何其他操作。虽然这会奏效,但意图并不像前面的示例那样明确(例如,实习生应该等待某些设置过程完成后再继续)。
我正在尝试使用 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 完成,然后再执行任何其他操作。虽然这会奏效,但意图并不像前面的示例那样明确(例如,实习生应该等待某些设置过程完成后再继续)。