使用 Selenium-Cucumber Maven 框架进行跨浏览器测试

Cross browser testing with Selenium-Cucumber Maven framework

我在 Junit 中使用 selenium cucumber maven 框架。我需要 运行 在多个浏览器中进行测试。我怎样才能做到这一点?谁能帮我?我的 TestRunnerTest.java 文件如下:

@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/1login.feature"
        , glue= {"stepDefinition"}
, plugin = { "com.vimalselvam.cucumber.listener.ExtentCucumberFormatter:target/cucumber-reports/report.html"}, 
        monochrome = true
)
public class TestRunnerTest {
public static WebDriver driver;
public static String timeStamp = new 
SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
private static TestRunnerTest sharedInstance = new TestRunnerTest();
private TestRunnerTest() { }

public static TestRunnerTest getInstance() {
    return sharedInstance;
}

@BeforeClass
public static void before() {   

       System.setProperty("webdriver.chrome.driver", "E:\ChromeDriverNew\chromedriver.exe");
       driver=new ChromeDriver();
           driver.manage().window().maximize();
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);  
 }
@AfterClass
public static void after() {


 Runtime.getRuntime().addShutdownHook(new Thread()
    {
          public void run()
          {         
            try {
                 Reporter.loadXMLConfig(new File("config/report.xml"));
                Files.move(Paths.get("target/cucumber-reports"), Paths.get("target/cucumber-reports_ "+ 
            LocalDateTime.now().format(DateTimeFormatter.ofPattern("L-d-YYYY H-m-s"))), 
                        StandardCopyOption.REPLACE_EXISTING);
            } catch (IOException e) {
                e.printStackTrace();
            }
          }
        });

driver.quit();
}

我的 baseDefinition 如下:

public class baseDefinition {
public Boolean beforsuit=true;
public String baseurl = "https://click2rail-dev.cloudiumedge.com";
private static TestRunnerTest runner_TestObj = TestRunnerTest.getInstance();
public  WebDriver driver = runner_TestObj.driver;   
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new 
Date());
}

现在我需要运行在多个浏览器(Chrome、Firefox、IE)中进行测试。我需要在 TestRunner.java 文件和 baseDefinition 文件中做哪些更改?如果你们帮我解决问题,那将非常有帮助,因为我是初学者。我搜索了很多次..但我正在使用 TestNG 获得解决方案。

这样做的一种方法是为浏览器名称设置一个环境变量。由于您使用的是 Maven,因此您可以在从命令行启动测试时简单地注入浏览器名称环境变量。示例:mvn test -DbrowserName=Firefox

然后您可以修改您的@BeforeClass 方法以根据浏览器名称进行条件检查。

@BeforeClass
public static void before() {   

       String browserName=System.getenv("browserName");
    if (browserName
            .equalsIgnoreCase("Chrome")) {
        System.setProperty("webdriver.chrome.driver", "E:\ChromeDriverNew\chromedriver.exe");
        driver=new ChromeDriver(); 
    } else if (browserName
            .equalsIgnoreCase("Firefox")) {
        //Set gecko driver path and initiate firefox 
    } else if (browserName
            .equalsIgnoreCase("IE")) {
        //Set IEDriver path and initiate IE
    } else {
        logger.debug("Error Message----> "
                + "browser name not mentioned properly");
        System.exit(0);
    }
           driver.manage().window().maximize();
      driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);  
 }