NodeJS - 与nightwatch selenium-standalone的集成测试挂起与chrome v54 +

时间:2016-10-19 16:51:07

标签: node.js selenium selenium-chromedriver nightwatch.js

我在我的应用程序中使用Nightwatch和Selenium-standalone进行集成测试。

集成测试在我的本地计算机上运行良好,直到昨天,因为我的Chrome浏览器已更新到54.0 +版本。

我已重新配置"安装"并且"开始" nightwatch集成测试的配置脚本,以避免消息"无法创建会话XXXXXXX" (我不记得确切的信息)。

但是当我启动测试时,打开了一个镀铬窗口。它转到请求的测试页面,尝试检查是否存在带有css类的html,但没有任何反应。它保持不动,直到我手动关闭镀铬窗口。关闭窗口后,控制台/终端显示错误,说明测试等待css类存在的元素但是发生了超时......

看起来测试脚本正在等待Chrome浏览器的任何响应。但浏览器不响应测试脚本。手动关闭chrome窗口后,我收到以下错误消息:"等待元素< .HeaderHome>时超时存在10000毫秒。 - 预期"发现"但得到了:没找到"。

以下是安装和启动Selenium独立服务器然后运行nithwatch测试脚本的脚本:

var selenium = require('selenium-standalone'),
  spawn = require('child_process').spawn,
  path = require('path'),
  args = require('yargs').argv;


var installSelenium = function(done) {
  selenium.install({
    basePath: __dirname + '/../test/endToEnd/bin',
    drivers: {
      chrome: {
        version: '2.24',
        arch: process.arch,
        baseURL: 'https://chromedriver.storage.googleapis.com'
      }
    },
    version: '3.0.1',
    baseURL: 'http://selenium-release.storage.googleapis.com',
    logger: function(message) {
        process.stdout.write(message + '\n');
    },
    progressCb: function(totalLength, progressLength, chunkLength) {

    }
  }, done);
}

var startSeleniumAndRunNightwatch = function(done) {
  selenium.start({
      seleniumArgs : ['-role hub'],
      basePath: __dirname + '/../test/endToEnd/bin'
    }, function(err, child) {
      if (err) return console.error('ERROR TRYING TO START SELENIUM: ', err);

      process.stdout.write('Selenium started, running nightwatch\n');

      var environment = args.env || 'default';
      process.stdout.write('Env is: ' + environment + '\n');

      var testFile = args.test;
      process.stdout.write('testFile is: ' + testFile + '\n');

      var options = ['--env', environment];
      if (testFile) {
        options = options.concat(['--test', testFile]);
      }

      nightWatchProcess = spawn(
        'nightwatch',
        options,
        {
          stdio: 'inherit'
        }
      );

      nightWatchProcess.on('exit', function() {
        if (child) {
          child.kill();
        }
      });
    }
  );
}

installSelenium(startSeleniumAndRunNightwatch);

以下是nightwatch.json文件的相关部分:

{
  "src_folders" : ["test/endToEnd/src/tests/user", "test/endToEnd/src/tests/provider"],
  "output_folder" : "test/endToEnd/reports",
  "custom_commands_path" : "",
  "custom_assertions_path" : "",
  "page_objects_path" : "test/endToEnd/src/pageObjects",
  "globals_path" : "",
  "selenium" : {
    "start_process" : false,
    "host" : "hub.browserstack.com",
    "port" : 80
  },
  "test_settings" : {
    "local": {
      "launch_url" : "127.0.0.1",
      "selenium_port"  : 4444,
      "selenium_host"  : "127.0.0.1",
      "silent": true,
      "screenshots" : {
        "enabled" : false,
        "path" : ""
      },
      "desiredCapabilities": {
        "browserName": "chrome",
        "javascriptEnabled": true,
        "acceptSslCerts": true
      }
    },
    "default": {
      "launch_url" : "http://hub.browserstack.com",
      "selenium_port"  : 80,
      "selenium_host"  : "hub.browserstack.com",
      "silent": true,
      "screenshots" : {
        "enabled" : false,
        "path" : ""
      },
      "desiredCapabilities": {
        "browserName": "chrome",
        "browser_version" : "54.0",
        "javascriptEnabled": true,
        "acceptSslCerts": true
      }
    },

问我是否需要更高的精确度。 谢谢您的帮助。 ;)

0 个答案:

没有答案