驱动程序.获取多个URL会导致错误的测试故障



我正在启动一个系统,该系统将包含越来越多的单页应用程序集合,我正在研究如何组织其UI测试以进行缩放。我想每个页面编写一个测试模块作为练习来验证它,但是我在连续调用driver.get()时遇到了一些麻烦。

specs/index.js

var webdriver = require('selenium-webdriver');
var test = require('selenium-webdriver/testing');
var expect = require('chai').expect;
var server = new require('selenium-webdriver/remote').SeleniumServer(path, {port: 4444});
var specs = [
    require('./google'), require('./bing')
];
//...
var driver = new webdriver.Builder()
         .usingServer(server.address())
         .withCapabilities(webdriver.Capabilities.firefox())
         .build();
test.describe('while learning webdriverjs', function() {
    test.after(function() {
        driver.quit();
    });
    specs.forEach(function(spec) {
        spec.run(driver, webdriver, test);
    });
});

specs/bing.js

var expect = require('chai').expect;
function run(browser, webdriver, test) {
    test.describe('a trip to bing', function() {
        browser.get('http://www.bing.com');
        test.it('does not fail', function() {
            browser.getTitle().then(function(title) {
               expect(title).to.equal('Bing');
            });
        });
    });
}
module.exports = { run: run };

specs/google.js

var expect = require('chai').expect;
function run(browser, webdriver, test) {
    test.describe('a trip to google', function() {
        browser.get('http://www.google.com');
        test.it('does not fail', function() {
            browser.getTitle().then(function(title) {
                expect(title).to.equal('Google');
            });
        });
    });
}
module.exports = { run: run };

现在运行google.js或仅运行bing.js可以运行正常,但是连续运行两个返回:

while learning webdriverjs
    a trip to bing
      1) does not fail
    a trip to google
      ✓ does not fail

1 passing (12s)
1 failing
1) while learning webdriverjs a trip to bing does not fail me:
  + expected - actual
  +"Bing"
  -"Google"
  at <anonymous>
==== async task ====
WebDriver.getTitle()
  at webdriver.WebDriver.schedule (/.../node_modules/selenium-    webdriver/lib/webdriver/webdriver.js:267:15)
  at webdriver.WebDriver.getTitle (/.../node_modules/selenium-webdriver/lib/webdriver/webdriver.js:640:15)
  at /.../projects/learn-webdriver/specs/bing.js:9:11
  at webdriver.promise.ControlFlow.runInNewFrame_ (/.../node_modules/selenium-webdriver/lib/webdriver/promise.js:1445:20)
  at webdriver.promise.ControlFlow.runEventLoop_ (/.../node_modules/selenium-webdriver/lib/webdriver/promise.js:1310:8)
  at wrapper [as _onTimeout] (timers.js:252:14)
  at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
==== async task ====
  at Context.<anonymous> (/.../node_modules/selenium-webdriver/testing/index.js:119:12)
  at Test.Runnable.run (/usr/local/lib/node_modules/mocha/lib/runnable.js:194:15)
  at Runner.runTest (/usr/local/lib/node_modules/mocha/lib/runner.js:372:10)
  at /usr/local/lib/node_modules/mocha/lib/runner.js:448:12
  at next (/usr/local/lib/node_modules/mocha/lib/runner.js:297:14)
  at /usr/local/lib/node_modules/mocha/lib/runner.js:307:7
  at next (/usr/local/lib/node_modules/mocha/lib/runner.js:245:23)
  at Object._onImmediate (/usr/local/lib/node_modules/mocha/lib/runner.js:274:5)
  at processImmediate [as _immediateCallback] (timers.js:330:15)

不完全确定我在做什么错,但是我敢肯定driver.get()的移动速度比规格快。我还注意到,在Selenium-webdriver/Testing中使用DONE()完成异步测试(我尝试时,我都会获得"不确定的功能")。

>

我还尝试过不使用带有奇怪结果的硒包裹的摩卡杯全球 - 在我的Win 7 Enterprise中,所有测试都会立即通过,然后浏览器被触发,然后任何失败后都会引发异常;在我的Ubuntu 12.04机器上,所有测试立即通过,没有浏览器实例。

我确定我没有用尽组织这些测试的可能方法,以便它们可以正确运行,但是我看不到它们。

看起来您正在并行运行测试,但是您正在通过驱动程序的同一实例到每个驱动程序,因此他们将共享浏览器窗口。

我不确定您是否也正确使用WebDriverjs测试内容。我自己没有使用过它,但是如果有test.describe(...),我希望会有test.it(...)

请查看Web驱动程序中的一个测试文件,以了解他们如何编写测试。

我崩溃了,决定使用量角器。

我的问题在很大程度上是组织的。

最新更新