首页 > 解决方案 > 如何启动所有空手道功能,设置将哪个浏览器用作外部 Maven 变量

问题描述

我试图找到一种方法来通过 maven 使用外部变量来设置浏览器(使用本地 webdriver 或使用 Selenium 网格)来启动空手道测试中的所有功能。

所以像:

mvn test -Dbrowser=chrome (or firefox, safari, etc)

或使用 Selenium 网格:

mvn test -Dbrowser=chrome (or firefox, safari, etc) -Dgrid="grid url"

对于 Cucumber 和 Java,使用单例设置全局 web 驱动程序非常简单,然后在所有测试中使用该驱动程序。通过这种方式,我可以使用不同的本地或远程 Web 驱动程序运行测试。

在空手道中,我尝试了不同的解决方案,最后一个是:

  1. 将空手道配置文件定义为变量“浏览器”
  2. 在我仅设置空手道驱动程序的单个功能“X”中使用变量“浏览器”
  3. 从所有其他带有 callonce 的功能中重新调用功能“X”以使用该驱动程序

但它没有用,老实说,在我看来这不是正确的方法。可能能够从功能内部的 Javascript 函数设置空手道驱动程序是正确的方法,但我无法找到解决方案。

我发现空手道的另一个问题是使用本地或远程网络驱动程序区分行为,因为它们以不同方式设置的功能文件。

那么有没有人有我同样的需求,我该如何解决呢?

标签: seleniumtestingwebdriverkarate

解决方案


在彼得托马斯的建议下,我使用了这个 karate-config.js

function fn() {

  // browser settings, if not set it takes chrome
  var browser = karate.properties['browser'] || 'chrome';
  karate.log('the browser set is: ' + browser + ', default: "chrome"');

  // grid flag, if not set it takes false. The grid url is in this format http://localhost:4444/wd/hub
  var grid_url = karate.properties['grid_url'] || false;
  karate.log('the grid url set is: ' + grid_url + ', default: false');

  // configurations.
  var config = {
    host: 'http://httpstat.us/'
  };

  if (browser == 'chrome') {
      if (!grid_url) {
         karate.configure('driver', { type: 'chromedriver', executable: 'chromedriver' });
         karate.log("Selected Chrome");
      } else {
         karate.configure('driver', { type: 'chromedriver', start: false, webDriverUrl: grid_url });
         karate.log("Selected Chrome in grid");
      }
   } else if (browser == 'firefox') {
      if (!grid_url) {
          karate.configure('driver', { type: 'geckodriver', executable: 'geckodriver' });
          karate.log("Selected Firefox");
      } else {
          karate.configure('driver', { type: 'geckodriver', start: false, webDriverUrl: grid_url });
          karate.log("Selected Firefox in grid");
      }
   } 

  return config;
}

通过这种方式,我能够调用测试套件,指定要直接从命令行使用的浏览器(用于 Jenkins 管道):

mvn clean test -Dbrowser=firefox -Dgrid_url=http://localhost:4444/wd/hub

推荐阅读