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



我正在使用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();
}

我的基本定义如下:

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);  
}

相关内容

  • 没有找到相关文章

最新更新