Кросс-браузерное тестирование с фреймворком Selenium-Cucumber Maven - PullRequest
0 голосов
/ 05 сентября 2018

Я использую селеновые огурцы Maven Framework с Junit. Мне нужно запустить тесты в нескольких браузерах. Как я могу достичь этого? Может кто-нибудь мне помочь? Мой файл 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();
}

И мое базовое определение таково:

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 голосов
/ 05 сентября 2018

Один из подходов к этому - иметь переменную окружения для имени браузера. Поскольку вы используете 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);  
 }
...