Использование объектов страниц в Nightwatch JS
Я использую nightwatch "0.8.6". В документации на страницах я создал файл pages/login.js
и добавил каталог в файл конфигурации с помощью:
module.exports = {
url: function() {
return this.launchUrl;
}
};
В документации упоминается this.api
, но это не свойство клиента/браузера. this.launchUrl
, по-видимому, доступен.
Я изменил существующий тест, чтобы использовать его:
module.exports = {
'Login page has a login button' : function (browser) {
browser
.url(browser.page.login().url())
.waitForElementVisible('body', 10000)
.assert.containsText('button', 'SIGN IN')
.end();
}
}
Тест теперь терпит неудачу..url пытается открыть селен с data:,
вместо значения this.launchUrl, который является localhost: 3000.
Объект страницы, по-видимому, оценивается в контексте теста входа в систему, поэтому этот объект страницы должен иметь этот .launchUrl. Дайвинг в источник, который я вижу, также есть объекты обертки страницы в миксе.
Как правильно использовать создание и использование объекта страницы в 0.8.6?
Ответы
Ответ 1
Я думаю, вы можете попробовать добавить один var, чтобы вызвать страницу login.js.
например:
module.exports = {
'Login page has a login button' : function (browser) {
var LoginPage = browser.page.login();
LoginPage.navigate();
LoginPage
.waitForElementVisible('body', 10000)
.assert.containsText('button', 'SIGN IN')
.end();
}
}
Ответ 2
Итак, согласно документам, вы должны:
- "Каждый объект страницы должен располагаться в отдельном файле, расположенном в выделенной папке. Nightwatch считывает объекты страницы из папки (или папок), указанной в свойстве конфигурации page_objects_path
.
Вы настроили каталог page_objects_path
?
Как только вы это сделаете, вы можете создать файл js в этой папке, например:
module.exports = function(client) {
return {
gotoUrl: function() {
return client
.url(client.launchUrl);
},
};
};
И тогда вы можете написать свой тест следующим образом:
module.exports = {
'Login page has a login button': (browser) => {
browser.page.pagescriptname()
.gotoUrl()
.waitForElementVisible('body', 10000)
.assert.containsText('button', 'SIGN IN')
.end();
}
}
Убедитесь, что вы сконфигурировали launch_url
в вашем файле nightwatch.js(или это можно изменить динамически (что я сделал для моего проекта) через файл nightwatch.conf.js
.