2017-04-17 100 views
0

我想在三个不同的浏览器中并行运行一个功能文件。 如何创建三个不同的webdriver实例? 请添加如何为两个不同的功能文件做同样的事情?黄瓜跨浏览器测试

P.S.我正在用java工作黄瓜。

+0

你使用的是testng还是junit? – Grasshopper

+0

我正在使用junit。 –

回答

0

当你提到“三个平行的不同的浏览器”你的意思是像的Chrome,Firefox和探险家在Chrome仅的平行 OR 三种不同的情况下运行。

如果是请参阅本文 - 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(不会以较低的版本一起为“叉号”传递空),selenium 2.53(u需要弄清楚的硒3码的变化,如果在驱动程序的创建需要)和浏览器Chrome and Firefox(你需要添加代码为IE)。

代码从文章的github

  1. 更改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); 
    } 
  • 更改feature files - 取下标签。更改其中一个功能文件以包含其他一些步骤。编码步骤定义类中的新步骤。

  • 更改为runner classes - 从cucumber选项中删除标签选项,您可能需要添加glue选项以指向您的步骤定义类。所以有效的跑步者类都是一样的。如果需要,可以删除其中一个跑步者类。其他测试将在每个浏览器中重复两次。

  • pom.xml - 确保定义的分叉数量(<surefire.fork.count>5</surefire.fork.count>)大于您正在使用的浏览器数量。否则逻辑将失败。

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

    这应该在所有浏览器实例中的所有功能文件中运行所有方案。您可以优化标签和功能等cucumberoptions以运行特定方案或功能文件。

    +0

    我的意思是第一个案子。 –

    0

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

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