我使用 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 - 一个可以工作的 chrome 控制台。但它只是在断点处不暂停地运行所有测试。命令:
devtool node_modules/mocha/bin/_mocha -qc -- ./Tests.js --break
在 C# + Selenium WebDriver 上,我在逐步调试时没有问题,但现在我需要在 JavaScript + Selenium WebDriver 上进行调试。
请给个建议?
最佳答案
在 node-inspector 的帮助下,您可以像调试任何 Node.js 脚本一样调试 Mocha 测试:
安装并运行 Node 检查器:
npm install -g node-inspector
Node 检查器
使用中断选项运行测试:
mocha [选项] --debug-brk
在 url http://127.0.0.1:8080/?port=5858 的 Chrome 中打开调试器
您可以设置断点并享受使用 Chrome 开发工具进行调试的乐趣!
关于javascript - 如何通过断点使用 Selenium WebDriver 在 Node.js 上调试 javascript 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36567897/