如何使用SeleniumWebDriver通过断点调试Node.js上的javascript测试
How to debug javascript tests on Node.js with Selenium WebDriver by breakpoints?
我使用WebStorm编写javascript测试。我已经包含了Selenium WebDriver(+chromedriver)来在浏览器中运行我的测试。作为一个测试运行程序框架,我使用Mocha。
问题是:当我尝试调试测试并在代码中设置断点时,调试WebDriver没有启动。因此,我无法实时看到任何变量。
代码示例:
// Add external libraries
var test = require('selenium-webdriver/testing'), webdriver = require('selenium-webdriver'), By = require('selenium-webdriver').By;
var mocha = require('./node_modules/mocha/mocha.js'), chai = require('chai'), chaiuse = require('chai-as-promised'), expect = require('chai').expect;
var assert = require('assert');
// global variable for webdriver browser
var browser;
// Main part with test suites
test.describe('Suite 1', function() {
this.timeout(5000);
test.beforeEach( function(){ // Executes before each test
browser = new webdriver.Builder().usingServer().withCapabilities({ 'browserName' : 'chrome', 'timeout' : '5000' }).build();
});
test.afterEach( function(){ // Executes after each test
browser.close();
});
test.it('Get Fields', function(done) {
browser.get('http://google.com');
var btnFirst = browser.wait(webdriver.until.elementLocated(webdriver.By.name('btnK'), 30000));
var btnSecond = browser.findElement(webdriver.By.name('btnI')).getAttribute("name");
btnSecond.then(function(text) {
console.log("Name of Second button: " + text + "'n");
assert.equal(text,'btnI','Button with name ''btnI'' not presented');
});
done();
});
});
所以现在所有的过程就像黑盒测试开发一样。
我试过DevTools-一个铬控制台来工作。但它只是在断点上不停顿地运行所有测试。命令:
devtool node_modules/mocha/bin/_mocha -qc -- ./Tests.js --break
在C#+Selenium WebDriver上,我对逐步调试没有问题,但现在我需要在JavaScript+SeleniumWebDriver中进行调试。
请给我个建议?
在节点检查器的帮助下,您可以像调试任何Node.js脚本一样调试Mocha测试:
-
安装并运行节点检查器:
npm install -g node-inspector
node-inspector
-
使用break选项运行测试:
mocha [options] --debug-brk
-
在url打开Chrome中的调试器http://127.0.0.1:8080/?port=5858
您可以使用Chrome开发工具设置断点并享受调试!
来源:如何使用Chrome 调试Mocha测试
相关文章:
- 在索引.html和应用.js [node.js] 之间共享变量
- JS(node.js)而循环不起作用
- 如何使用 JS (Node.js) 防止 HTTP 查询中允许使用 UTF8 字符串
- Angular JS & Node Webkit Routing
- 当作为脚本运行时.js Node中“this”的上下文是什么
- JS/Node:- 使用 node.io 选择标记
- JavaScript 如何让节点在返回 node.js/Node-RED 之前等待
- 处理快速连续的函数调用 - Javascript / underscore.js / node.js
- 如何在一台服务器中运行不同的.js文件.js NODE JS中的文件
- JS node-mysql bools 表现得很奇怪
- Node.js+Node Webkit+基于Node串行端口的应用程序-这可能吗
- 如何在Express.js/Node.js中检查查询字符串是否有值
- Express.Js, Node.Js, MongoDB Questions
- 在JS/Node中,当多个人编辑相同的记录时,如何避免数据冲突?有图案吗
- 服务器端js(node.js)上的同步
- 将参数从jade发送到js/node
- angular.js+node.js/electron中的Promise;不起作用
- 是否有可能确定我的应用程序的aws实例使用js/node aws-sdk
- Image Magick模块抛出奇怪的错误(Express js Node js)
- 用JS (Node.js)读取文本文件'