gpt4 book ai didi

java - Cucumber 中的跨浏览器测试

转载 作者:行者123 更新时间:2023-12-02 02:53:26 24 4
gpt4 key购买 nike

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

附注我正在用 java 处理 cucumber 。

最佳答案

当您提到“并行运行三个不同的浏览器”时,您的意思是并行运行 Chrome、Firefox 和浏览器,还是仅 Chrome 的三个不同实例

如果是第二种情况请引用这篇文章 - https://opencredo.com/running-cucumber-jvm-tests-in-parallel/ 。这背后的基本逻辑是根据所需的并行实例数量 fork 成单独的 JVM。这是使用 Maven Surefire 插件完成的。

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

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

代码

  1. 更改为 ShareDriver.java来自 github 文章 -用它覆盖静态 block 并添加其他方法。
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 中删除标签选项,您可能需要添加粘合选项以指向您的步骤定义类。因此,实际上两个运行者类别是相同的。如果需要,您可以删除其中一个运行者类别。否则测试将在每个浏览器中重复两次。

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

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

    这应该运行所有浏览器实例中所有功能文件中的所有场景。您可以细化 Cucumber 选项(例如标签和功能)来运行特定场景或功能文件。

    关于java - Cucumber 中的跨浏览器测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43446922/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com