黄瓜跨浏览器测试

我想平行地在三个不同的浏览器中运行一个function文件。 如何创建三个不同的webdriver实例? 并请添加如何对两个不同的function文件执行相同的操作?

PS我正在研究黄瓜与java。

当你提到“三个不同的浏览器并行”时,你的意思是Chrome,Firefox和浏览器并行运行只有三个不同的Chrome实例

如果是第二种情况,请参阅本文 – https://opencredo.com/running-cucumber-jvm-tests-in-parallel/ 。 这背后的基本逻辑是为所需的并行实例数量分配单独的JVM。 这是使用Maven surefire插件完成的。

如果是第一种情况,那么您将需要修改某些方面。 该插件将“fork number”传递给JVM,您可以使用它来实例化该JVM的特定浏览器驱动程序。

我正在使用Java 8, junit 4.12, picocontainer for Dependency Injection, Maven 3 (不能用于较低版本,因为’fork number’传递null), selenium 2.53 (如果驱动程序创建需要,你需要弄清楚Selenium 3的代码更改)和浏览器Chrome and Firefox (你需要为IE添加代码)。

  1. 文章github对ShareDriver.java更改 – 用此覆盖静态块并添加其他方法。
 static { instantiateDriver(); Runtime.getRuntime().addShutdownHook(CLOSE_THREAD); } private static void instantiateDriver() { //numFork will be passed in the maven command line or eclipse //--- clean install -DnumFork=${surefire.forkNumber} int browserType = Integer.parseInt(System.getProperty("numFork")); System.out.println("BROWSER TYPE "+browserType); if(browserType == 1) instantiateChromeDriver(); else if (browserType == 2) instantiateFirefoxDriver(); else if (browserType == 3) { instantiateIEDriver(); } } private static void instantiateIEDriver() { //Implement this } private static void instantiateFirefoxDriver() { REAL_DRIVER = new FirefoxDriver(); REAL_DRIVER.manage().window().maximize(); } private static void instantiateChromeDriver() { System.setProperty("webdriver.chrome.driver", "location of chromedriver.exe"); ChromeOptions chop = new ChromeOptions(); chop.addArguments("test-type"); chop.addArguments("start-maximized"); chop.addArguments("--disable-extensions"); REAL_DRIVER = new ChromeDriver(chop); } 
  1. feature files更改 – 删除标记。 更改其中一个要素文件以包含其他一些步骤。 对步骤定义类中的新步骤进行编码。

  2. runner classes更改 – 从cucumberoptions中删除tag选项,您可能需要添加glue选项以指向您的步骤定义类。 因此,有效的两个跑步者类都是一样的。 如果需要,您可以删除其中一个跑步者类。 其他测试将在每个浏览器中重复两次。

  3. pom.xml确保定义的分叉数( 5 )大于您使用的浏览器数量。 否则逻辑将失败。

在Maven中运行 – 您可以在目标选项中使用命令clean install -DnumFork=${surefire.forkNumber}从eclipse插件运行。 或者从命令行使用mvn clean install -DnumFork=${surefire.forkNumber}

这应该运行所有浏览器实例中所有function文件中的所有方案。 您可以优化标签和function等黄瓜选项以运行特定方案或function文件。

我会选择执行三次构建。 我会为每个执行设置一个环境变量来决定使用哪个浏览器。

要并行运行它们,我会编写一个shell脚本来设置环境变量并启动三次执行。