Javascript 如何将参数从Gruntfile.js传递到webdriverio规范?

Javascript 如何将参数从Gruntfile.js传递到webdriverio规范?,javascript,gruntjs,webdriver-io,Javascript,Gruntjs,Webdriver Io,我想从Gruntfile.js参数化我的WebDrivero规范。 目标是在Grunt中指定主机、端口、用户名、密码以及其他参数,并从规范文件中读取它们 在阅读源代码实验室示例时,我在选项中设置了主机和端口。但在配置端口时,我遇到以下错误: /Users/sandro/Developing/Projekte/sling/svn/contrib/explorers/resourceeditor/frontend/node_modules/grunt-webdriver/node_modules/w

我想从Gruntfile.js参数化我的WebDrivero规范。 目标是在Grunt中指定主机、端口、用户名、密码以及其他参数,并从规范文件中读取它们

在阅读源代码实验室示例时,我在选项中设置了主机和端口。但在配置端口时,我遇到以下错误:

/Users/sandro/Developing/Projekte/sling/svn/contrib/explorers/resourceeditor/frontend/node_modules/grunt-webdriver/node_modules/webdriverio/lib/utils/PromiseHandler.js:154
             throw error;
                   RuntimeError: RuntimeError
这就是为什么我认为必须有另一种方法来做到这一点。 我的Gruntfile.js如下所示:

module.exports = function(grunt) {

var e2eTestSpecFolder = '../src/test/javascript/e2e/spec/**/*spec.js';

grunt.initConfig({
...
    webdriver: {
        options: {
            host: 'localhost',
            port: 8080
        },
        chrome: {
            tests: [e2eTestSpecFolder],
            options: {
                // overwrite default settings 
                desiredCapabilities: {
                    browserName: 'chrome'
                }
            }
        },
        firefox: {
            tests: [e2eTestSpecFolder],
            options: {
                // overwrite default settings 
                desiredCapabilities: {
                    browserName: 'firefox'
                }
            }
        }
    }
})

...
grunt.registerTask('desktop_build', ['webdriver:chrome', 'webdriver:firefox']);
};
提前感谢您的任何提示

更新: 我使用以下版本:

  • grunt cli:v0.1.13

  • 呼噜声:v0.4.5

  • webdriver管理器:3.0.0

  • grunt webdriver:0.4.8

    • 好的,我知道你的问题:)

      这些“主机”和“端口”参数是预定义的参数,用于其他目的(执行测试的是主机和端口,您正在重新定义端口-这就是它们失败的原因,例如在这里-您可以看到它们用于连接到saucelabs)。为此,最简单的解决方案是定义ENV变量并为它们设置一些默认值(但不应该在gruntfile中这样做,事实上,这不是必需的) 您可以在第一次放置这些变量的文件中定义它,如:

      testHost: (typeof(process.env.TEST_HOST) === 'undefined') ? 'http://localhost' : process.env.TEST_HOST;
      
      之后,如果需要将TEST_HOST作为env变量,您只需提供它:

          Linux: sh~ TEST_HOST=http://google.com
      grunt task
          Win: export TEST_HOST=http://google.com
      grunt task
      

      如果不设置变量,则默认值为“”。什么是grunt和w.io版本?你想达到什么目标?要将webdriver.io连接到外部集线器/通过代理?测试应使用主机和端口打开网站,并使用用户名和密码登录此网站。在那里,测试创建数据、删除数据等等。但是主机、端口、用户名和密码应该是可配置的。我想在grunt.js文件中为这些值提供一个初始配置,并且我想让它们可以从命令行重写。但问题是,如何将这些变量从grunt文件传递到webdriver.io规范。版本:grunt cli:v0.1.13 grunt:v0.4.5 webdriver manager:3.0.0 grunt webdriver:0.4.8Ok,然后我向Grunfile.js提供“testHost”。问题是,我如何在WebDrivero规范中访问它?@Sandro或者使用process.env.TEST_HOST,或者使用grunt.config.get(),如果可能的话,我更喜欢使用testHost而不是env变量。因为这似乎是在Grunt中定义参数的方法。当然,如果这不可能,那么我必须使用ENV变量但这似乎没有记录调用grunt配置的变量。如何运行它?
      env | grep testHost
      的输出是什么?