Selenium 如何启动所有空手道功能设置哪个浏览器用作外部maven变量
我试图找到一种方法,通过maven启动空手道测试中的所有功能,使用外部变量设置浏览器(使用本地webdriver或Selenium网格) 比如:Selenium 如何启动所有空手道功能设置哪个浏览器用作外部maven变量,selenium,testing,webdriver,karate,Selenium,Testing,Webdriver,Karate,我试图找到一种方法,通过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,使用单例设置全局webdriver非常简单
mvn test -Dbrowser=chrome (or firefox, safari, etc)
或者使用Selenium网格:
mvn test -Dbrowser=chrome (or firefox, safari, etc) -Dgrid="grid url"
对于Cucumber和Java,使用单例设置全局webdriver非常简单,然后在所有测试中使用。通过这种方式,我可以使用不同的本地或远程Web驱动程序运行测试
在空手道中,我尝试了不同的解决方案,最后一个是:
那么,有人有我同样的需求吗?我该如何解决它呢?这里有几个原则。空手道负责启动
驱动程序
(相当于SeleniumWebDriver
)。您只需按照以下说明设置配置驱动程序
:
最后,根据您的环境,只需切换驱动程序配置。这可以在karate config.js
实际上(全局)而不是在每个功能文件中轻松完成:
function fn() {
var config = {
baseUrl: 'https://qa.mycompany.com'
};
if (karate.env == 'chrome') {
karate.configure('driver', { type: 'chromedriver', start: false, webDriverUrl: 'http://somehost:9515/wd/hub' });
}
return config;
}
在命令行上:
mvn test -Dkarate.env=chrome
我建议您熟悉空手道的配置:-它实际上比典型的Java/Maven项目更简单
另一种方法是在karate config.js
中设置变量,然后在功能文件中使用它们
* configure driver = { type: '#(myVariableFromConfig)' }
记住这些原则:
- 由“顶级”功能创建的任何驱动程序实例将可用于“调用”功能
- 您甚至可以调用一个“公共”功能,在那里创建驱动程序,它将在“调用”功能中设置
- “顶级”功能结束时,创建的任何驱动程序都将关闭
对于并行执行或尝试在所有测试中重复使用单个浏览器,请参阅:以下是一些原则。空手道负责启动
驱动程序
(相当于SeleniumWebDriver
)。您只需按照以下说明设置配置驱动程序
:
最后,根据您的环境,只需切换驱动程序配置。这可以在karate config.js
实际上(全局)而不是在每个功能文件中轻松完成:
function fn() {
var config = {
baseUrl: 'https://qa.mycompany.com'
};
if (karate.env == 'chrome') {
karate.configure('driver', { type: 'chromedriver', start: false, webDriverUrl: 'http://somehost:9515/wd/hub' });
}
return config;
}
在命令行上:
mvn test -Dkarate.env=chrome
我建议您熟悉空手道的配置:-它实际上比典型的Java/Maven项目更简单
另一种方法是在karate config.js
中设置变量,然后在功能文件中使用它们
* configure driver = { type: '#(myVariableFromConfig)' }
记住这些原则:
- 由“顶级”功能创建的任何驱动程序实例将可用于“调用”功能
- 您甚至可以调用一个“公共”功能,在那里创建驱动程序,它将在“调用”功能中设置
- “顶级”功能结束时,创建的任何驱动程序都将关闭
对于并行执行或尝试在所有测试中重复使用单个浏览器,请参考:根据Peter Thomas的建议,我使用了这个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管道中使用):
根据Peter Thomas的建议,我使用了这个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管道中使用):
谢谢彼得·托马斯。我试试你的解决办法。对这个工具的赞美,它真的是对彼得·托马斯的承诺。我试试你的解决办法。对这个工具的赞美,它真的很有前途