如何使用Selenium+在测试失败时保持浏览器打开;夜表+;镀铬器?
我正在使用Nightwatch、Selenium和Chrome驱动程序进行自动化UI测试。有时,在任意数量的远程环境中都会出现测试失败。要在本地调试失败,我希望在测试失败时保持浏览器打开 我以前可以使用nightwatch.json和nightwatch.conf.js中的配置设置来实现这一点,但是我在一次硬盘故障中丢失了配置设置备忘单,尽管我在谷歌上尽了最大的努力,我似乎再也找不到正确的组合 如果我没记错的话,它不是任何类型的如何使用Selenium+在测试失败时保持浏览器打开;夜表+;镀铬器?,selenium,selenium-webdriver,selenium-chromedriver,nightwatch.js,Selenium,Selenium Webdriver,Selenium Chromedriver,Nightwatch.js,我正在使用Nightwatch、Selenium和Chrome驱动程序进行自动化UI测试。有时,在任意数量的远程环境中都会出现测试失败。要在本地调试失败,我希望在测试失败时保持浏览器打开 我以前可以使用nightwatch.json和nightwatch.conf.js中的配置设置来实现这一点,但是我在一次硬盘故障中丢失了配置设置备忘单,尽管我在谷歌上尽了最大的努力,我似乎再也找不到正确的组合 如果我没记错的话,它不是任何类型的keepbrowservepen:truetype标志。如果内存可用
keepbrowservepen:true
type标志。如果内存可用,则是将某种类型的超时设置为一个愚蠢的高数字,再加上detachDriver之类的东西。我已经检查了Selenium文档,特别关注的是,和的列表,但是我没有找到任何工作组合
我错过了什么
这是我的nightwatch.json
{
"output_folder": "tests/automation/reports",
"end_session_on_fail": false,
"test_settings": {
"default": {
"selenium_port": 4444,
"screenshots": {
"enabled": true,
"path": "tests/automation/reports/screenshots"
},
"javascriptEnabled": true,
"acceptSslCerts": true,
"acceptInsecureCerts": true,
"globals": {
"waitForConditionTimeout": 10000
}
},
"chrome": {
"extends": "default",
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true,
"acceptInsecureCerts": true,
"chromeOptions": {
"args": [
"--no-sandbox",
"--disable-gpu"
]
}
}
}
}
}
还有我的nightwatch.conf.js
const geckoDriver = require('geckodriver');
const chromeDriver = require('chromedriver');
const seleniumServer = require('selenium-server');
module.exports = (function (settings) {
settings.selenium = {
start_process: true,
server_path: seleniumServer.path,
log_path: 'tests/automation/reports/',
host: 'localhost',
port: 4444,
cli_args: {
'webdriver.chrome.driver': chromeDriver.path,
'webdriver.gecko.driver': geckoDriver.path,
'webdriver.edge.driver': 'C:\\windows\\system32\\MicrosoftWebDriver.exe',
'webdriver.port': '4444'
}
};
return settings;
})(require('./nightwatch.json'));
Selenium版本是2.35.1这不是一个优雅的解决方案,但接近您想要的。基本上,我们可以在
afterEach()
中检查browser.currentTest.results.errors的值,如果该值大于0,我们可以在那里暂停测试,保持浏览器会话处于活动状态
afterEach: function(browser) {
if(browser.currentTest.results.errors > 0) {
browser.pause()
}
这不是一个优雅的解决方案,但接近您所寻找的。基本上,我们可以在afterEach()
中检查browser.currentTest.results.errors的值,如果该值大于0,我们可以在那里暂停测试,保持浏览器会话处于活动状态
afterEach: function(browser) {
if(browser.currentTest.results.errors > 0) {
browser.pause()
}
这不是一个优雅的问题。打开浏览器会话进行本地调试对用户非常有帮助,但在自动化套件下运行时,这是不需要的。我在一个类似的if
块中截图。然后调用browser.end()
关闭浏览器。如果我将其注释掉,我可以在浏览器中查看测试状态。谢谢这不是一个优雅的问题。打开浏览器会话进行本地调试对用户非常有帮助,但在自动化套件下运行时,这是不需要的。我在一个类似的if
块中截图。然后调用browser.end()
关闭浏览器。如果我将其注释掉,我可以在浏览器中查看测试状态。谢谢