【问题标题】:How to debug javascript tests on Node.js with Selenium WebDriver by breakpoints?如何通过断点使用 Selenium WebDriver 在 Node.js 上调试 javascript 测试?
【发布时间】:2016-08-02 17:58:03
【问题描述】:

我使用 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 上这样做。

请给个建议?

【问题讨论】:

    标签: javascript node.js selenium selenium-webdriver mocha.js


    【解决方案1】:

    您可以像任何 Node.js 脚本一样在 node-inspector 的帮助下调试 Mocha 测试:

    • 安装并运行节点检查器:

      npm install -g node-inspector node-inspector

    • 使用 break 选项运行测试: mocha [options] --debug-brk

    • 在 Chrome 中打开调试器,网址为 http://127.0.0.1:8080/?port=5858

    您可以设置断点并享受使用 Chrome 开发工具进行调试的乐趣!

    来源:How to debug Mocha tests with Chrome

    【讨论】:

    • 我仍然无法从“webdriver”中获取元素。我遇到了与其他调试方式相同的行为 - webdriver 在调试代码后以图形方式执行所有命令。即使我设置了断点并成功执行了我的代码。
    • @Alex.K 您可以在您希望调试器中断的行之前添加debugger 语句,并查看它是否停止
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多