无法使用NightwatchJS关闭浏览器

时间:2019-02-03 21:02:17

标签: selenium selenium-webdriver nightwatch.js

我正在尝试使用Nightwatch打开我的网址,此后我将无法关闭浏览器。

我尝试使用timeouts以及browser.end()browser.closeWindow()。他们似乎都不适合我的网址。

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 :(得分:1)

LE:就像我在下面广泛描述的那样, 您不需要在测试结束时明确关闭浏览器 (通过browser.end()),作为Nightwatch测试运行程序在每个功能文件的末尾为您完成此操作。

但是,如果需要执行一些 teardown操作,然后显式关闭会话,请在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.jsregister.jsforgot_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