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

时间:2018-09-05 04:29:39

标签: maven selenium junit jvm cucumber-junit

我正在使用带有Junit的硒黄瓜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获得解决方案。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是为浏览器名称提供环境变量。由于您使用的是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);  
 }