黄瓜跨浏览器测试

时间:2017-04-17 07:12:11

标签: java cross-browser cucumber

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

P.S。我正在用黄瓜研究黄瓜。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

当你提到"三个不同的浏览器并行时#34;你的意思是 Chrome,Firefox和资源管理器并行运行仅限Chrome的三个不同实例

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

如果是第一个案例,那么您需要修改某些方面。该插件通过了#fork号码'到JVM,您可以使用它来实例化该JVM的特定浏览器驱动程序。

我正在使用Java 8, junit 4.12, picocontainer for Dependency Injection, Maven 3(不适用于较低版本,因为'叉号'传递null),selenium 2.53(如果需要,您需要找出Selenium 3的代码更改在驱动程序创建中)和浏览器Chrome and Firefox(您需要为IE添加代码)。

<强> 代码

  1. 文章github对ShareDriver.java的更改 - 用此覆盖静态块并添加其他方法。
  2. 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中删除标记选项,您可能需要添加glue选项以指向您的步骤定义类。因此,有效的两个跑步者类都是一样的。如果需要,您可以删除其中一个跑步者类。其他测试将在每个浏览器中重复两次。

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

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

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