Не удается закрыть браузер с помощью NightwatchJS - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь открыть свой URL, используя Nightwatch, и не могу потом закрыть браузер.

Я пытался использовать timeouts , а также browser.end() или browser.closeWindow().Кажется, ни один из них не работает для моего URL.

module.exports = {
  'Demo test mywrkouts' : function (browser) {
    browser.url('https://www.mywrkouts.com/workouts/search')
    browser.timeouts('script', 10000, function(result) {
    browser.end();
      console.log("Test result"+result);
    });
    //browser.closeWindow();
  }
};

Он открывает страницу, но не закрывает браузер.Я использую браузер Chrome с chromedriver.Я ожидаю закрыть окно, но оно не работает.

Любой совет приветствуется.

1 Ответ

0 голосов
/ 05 февраля 2019

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 слов , поэтому позвольте мне просто выразиться так ... то, что вы пытаетесь сделать, является синонимомследующее:

enter image description here

...