我想平行地在三个不同的浏览器中运行一个功能文件。 如何创建三个不同的webdriver实例? 请添加如何对两个不同的功能文件执行相同操作?
P.S。我正在用黄瓜研究黄瓜。
答案 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添加代码)。
<强> 代码 强>
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
的更改 - 从cucumberoptions中删除标记选项,您可能需要添加glue选项以指向您的步骤定义类。因此,有效的两个跑步者类都是一样的。如果需要,您可以删除其中一个跑步者类。其他测试将在每个浏览器中重复两次。
pom.xml
- 确保定义的分叉数(<surefire.fork.count>5</surefire.fork.count>
)超过您正在使用的浏览器数量。否则逻辑将失败
在Maven中运行 - 您可以使用目标选项中的命令clean install -DnumFork=${surefire.forkNumber}
从eclipse插件运行。或者使用mvn clean install -DnumFork=${surefire.forkNumber}
命令行。
这应该运行所有浏览器实例中所有功能文件中的所有方案。您可以优化标签和功能等黄瓜选项以运行特定方案或功能文件。