Selenium 无法使用NightwatchJS关闭浏览器

Selenium 无法使用NightwatchJS关闭浏览器,selenium,selenium-webdriver,nightwatch.js,Selenium,Selenium Webdriver,Nightwatch.js,我正在尝试使用Nightwatch打开我的url,但之后无法关闭浏览器 我尝试使用,以及browser.end(),或browser.closeWindow()。他们似乎都没有为我的url工作 module.exports = { 'Demo test mywrkouts' : function (browser) { browser.url('https://www.mywrkouts.com/workouts/search') browser.timeouts('scri

我正在尝试使用Nightwatch打开我的url,但之后无法关闭浏览器

我尝试使用,以及
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
。我想把窗户关上,但没用


感谢您的建议。

LE:正如我在下面详细描述的那样,您不需要在测试结束时明确关闭浏览器(通过
browser.end()
),因为夜视测试运行程序会在每个功能文件结束时为您关闭浏览器

但是,如果需要执行一些拆卸操作,然后显式关闭会话,请在
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/Gragotor(或任何其他基于Webdriver的测试解决方案)处理
浏览器
会话的方式

首先,您不必担心关闭活动会话。Nightwatch会在每个测试功能文件的末尾为您执行此操作。因此,运行三套测试套件(
login.js
register.js
忘记密码.js
)将依次生成并关闭三个不同的
浏览器
会话

此外,仅用于关闭
窗口
实例(考虑到您有多个窗口与同一
浏览器
会话关联)。它不会关闭主
窗口
,除非您已切换到另一个
窗口
实例(该实例以前在测试运行期间打开)

如果你在测试的中间使用,那么你基本上会杀死活动会话,从你的特征文件中取消下面的逻辑:

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字,所以让我简单地这样说。。。您尝试执行的操作与以下操作同义:


是因为您有browser.closeWindow()吗;被评论掉了?我尝试了评论和不评论,但都不适合我。如果可能的话,您可以在IDE中尝试相同的代码片段并帮助我吗?蒂亚。@KrishnaA你想实现什么?不是发生了什么,而是要测试的流是什么。除非你说得更具体些,否则我帮不了你……谢谢@iamdanchiv的详细解释。这是我正在努力实现的流程。步骤:1。打开url“”2。只需关闭浏览器。我尝试了下面的codemodule.exports={tags:['myTest'],在:函数(browser){browser.resizeWindow(1400800)},'Test#1':函数(browser){return browser.url(').waitForElementVisible('body',2000);}之后:函数(browser){browser.end()}@KrishnaA我已经更新了答案。试试看,告诉我是否有效。如果一切顺利,考虑关闭这个问题。干杯谢谢你的快速回复。遵循上述代码,面临以下问题。问题在于我的Chromedriver。升级到最新的驱动程序,开始工作时没有任何问题。非常感谢@iamdanchiv提供的全面帮助。