LE: Как я подробно описал ниже, вам не нужно явно закрывать браузер в конце теста (через browser.end()
), как тестер Nightwatch делает это для вас в конце каждого файла функций.
Но, если вам нужно выполнить некоторые операции разрыва , а затем явно закрыть сеанс, сделайте это в after
(или afterEach
) хуке.Попробуйте следующий фрагмент:
module.exports = {
before(browser) {
browser.maximizeWindow();
},
'My Wrkouts Test': (browser) => {
browser.url('https://www.mywrkouts.com/');
// Check if the website logo is visible:
browser.expect.element('#barbell-homepage-top-image-desktop img.app-bar-desktop-logo').to.be.visible;
// Check the articles heading text:
browser.expect.element('h3.blog-carousel-title.primary-blue-text.center').text.to.contain('Foundational Education Series');
},
after(browser, done) {
browser.end(() => {
console.info('*--*--*--*--*--*--*--*--*--*--*--*--*');
console.info('*-- Clossing session... Good bye! --*');
console.info('*--*--*--*--*--*--*--*--*--*--*--*--*');
done();
});
}
};
В любом случае, я чувствую, что вы путаете способ, которым NightwatchJS / WebdriverIO / Protractor ( или любое другое решение для тестирования на основе Webdriver ) обрабатываетbrowser
сеанс.
Во-первых, вам не нужно беспокоиться о закрытии активного сеанса .Nightwatch делает это за вас в конце каждого тестового файла функций .Таким образом, выполнение набора, скажем, трех наборов тестов (login.js
, register.js
, forgot_password.js
) будет последовательно порождать и закрывать три различных сеанса browser
.
Также, browser.closeWindow() используется только для закрытия экземпляра window
(, учитывая, что с одним и тем же browser
сеансом связано несколько окон).Он не закроет ваш основной window
, если вы не переключились на другой экземпляр window
(, который был ранее открыт во время тестового запуска ).
Если вы используете browser.end () в середине вашего теста, затем вы в основном убиваете активный сеанс, сводя на нет следующую логику из вашего файла:
INFO Request: DELETE /wd/hub/session/4a4bb4cb1b38409ee466b0fc8af78101
- data:
- headers: {"Content-Length":0,"Authorization":"Basic Z29wcm86YmM3MDk2MGYtZGE0Yy00OGUyLTk5MGMtMzA5MmNmZGJhZTMz"}
INFO Response 200 DELETE /wd/hub/session/4a4bb4cb1b38409ee466b0fc8af78101 (56ms) { sessionId: '4a4bb4cb1b38409ee466b0fc8af78101',
status: 0,
value: null }
LOG → Completed command end (57 ms)
Все после будет выглядеть так:
INFO Response 404 POST /wd/hub/session/null/elements (11ms) { sessionId: 'null',
value:
{ error: 'invalid session id',
message: 'No active session with ID null',
stacktrace: '' },
status: 6 }
! Примечание: Нет поддержки для выполнения того, что вы пытаетесь сделать, и не является распространенным вариантом использования, таким образом, отсутствие поддержки для этого по всемувсе эти решения для тестирования.
Они говорят, что картинка стоит 1000 слов , поэтому позвольте мне просто выразиться так ... то, что вы пытаетесь сделать, является синонимомследующее: