无法使用 NightwatchJS 关闭浏览器
Not able to close the browser using NightwatchJS
我正在尝试使用 Nightwatch 打开我的 url,之后我无法关闭浏览器。
我尝试使用 timeouts,以及 browser.end()
或 browser.closeWindow()
。 None 似乎在为我的 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
。我希望关闭 window,但它不起作用。
如有任何建议,我们将不胜感激。
LE: 就像我在下面详细描述的那样,你不需要在测试结束时明确关闭浏览器(通过 browser.end()
),因为 Nightwatch 测试-运行ner 会在每个功能文件的末尾为您执行此操作。
但是,如果您需要执行一些 拆卸操作 然后明确关闭会话,请在 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
实例(考虑到您有多个 windows 与同一个 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 }
!Note: There is no support for doing what you are trying to do, nor is it a common use-case, thus the lack of support for it across
all of these testing solutions.
他们说一张图片值1000字,所以让我简单地这样说吧......你正在尝试做的是以下同义词:
我正在尝试使用 Nightwatch 打开我的 url,之后我无法关闭浏览器。
我尝试使用 timeouts,以及 browser.end()
或 browser.closeWindow()
。 None 似乎在为我的 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
。我希望关闭 window,但它不起作用。
如有任何建议,我们将不胜感激。
LE: 就像我在下面详细描述的那样,你不需要在测试结束时明确关闭浏览器(通过 browser.end()
),因为 Nightwatch 测试-运行ner 会在每个功能文件的末尾为您执行此操作。
但是,如果您需要执行一些 拆卸操作 然后明确关闭会话,请在 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
实例(考虑到您有多个 windows 与同一个 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 }
!Note: There is no support for doing what you are trying to do, nor is it a common use-case, thus the lack of support for it across all of these testing solutions.
他们说一张图片值1000字,所以让我简单地这样说吧......你正在尝试做的是以下同义词: