公共类Baseclass_libraries {
公共静态WebDriver驱动程序;公共静态fileutil flib = new fileutil(); 公共静态ExtentReports范围;公共静态ExtentTest scopeTest;
@BeforeSuite公共无效configBS()引发IOException {范围=新的ExtentReports(System.getProperty(“ user.dir”)+“ / test-output / ExtentReport.html”,true); scope.addSystemInfo(“主机名”,“本地主机”); scope.addSystemInfo(“用户名”,“自动化”); scope.addSystemInfo(“ Environment”,“ QA”); }
@BeforeClass公共无效configBc()引发IOException {System.out.println(“ ========午餐浏览器========); 属性pobj = flib.getpropertiesfileobject(); 字符串browsername = pobj.getProperty(“ BROWSER”); if(browsername.equals(“ chrome”)){System.setProperty(“ webdriver.chrome.driver”,“ ./Resourse/chromedriver.exe”); driver = new ChromeDriver(); } else if(browsername.equals(“ firefox”)){driver = new FirefoxDriver(); } else if(browsername.equals(“ IE”)){System.setProperty(“ webdriver.IE.driver”,“”); driver = new InternetExplorerDriver(); } driver.manage()。window()。maximize(); driver.manage()。timeouts()。implicitlyWait(20,TimeUnit.SECONDS);
Properties pobj=flib.getpropertiesfileobject();
String CMS_URL=pobj.getProperty("URL");
if(CMS_URL.equals("https")) {
driver.get(pobj.getProperty("URL"));
}
else if(CMS_URL.equals("https: ")) {
driver.get(pobj.getProperty("URL"));
}
LoginPage log=PageFactory.initElements(driver, LoginPage.class);
log.EnterUsername(pobj.getProperty("USERNAME").trim());
Thread.sleep(2000);
LoginPage pro=PageFactory.initElements(driver, LoginPage.class);
pro.clickOnProceed();
Thread.sleep(2000);
LoginPage pwd=PageFactory.initElements(driver, LoginPage.class);
pwd.EnterPassword(pobj.getProperty("PASSWORD"));
Thread.sleep(2000);
LoginPage sub=PageFactory.initElements(driver, LoginPage.class);
sub.clickOnSubmit();
} @AfterMethod public void configAm(ITestResult结果){System.out.println(“注销到Event2mobile”); LogoutPage lout = PageFactory.initElements(驱动程序,LogoutPage.class); lout.clickOnlogout(); } @AfterClass public void configAc(ITestResult结果){
if(result.getStatus()==ITestResult.FAILURE){
extentTest.log(LogStatus.FAIL, "TEST CASE FAILED IS "+result.getName()); //to add name in extent report
extentTest.log(LogStatus.FAIL, "TEST CASE FAILED IS "+result.getThrowable()); //to add error/exception in extent report
String screenshotPath = screenshot.getScreenshot(driver, result.getName());
extentTest.log(LogStatus.FAIL, extentTest.addScreenCapture(screenshotPath)); //to add screenshot in extent report
//extentTest.log(LogStatus.FAIL, extentTest.addScreencast(screenshotPath)); //to add screencast/video in extent report
}
else if(result.getStatus()==ITestResult.SKIP){
extentTest.log(LogStatus.SKIP, "Test Case SKIPPED IS " + result.getName());
}
else if(result.getStatus()==ITestResult.SUCCESS){
extentTest.log(LogStatus.PASS, "Test Case PASSED IS " + result.getName());
}
extent.endTest(extentTest); //ending test and ends the current test and prepare to create html report
driver.quit();
System.out.println("========close browser=========");
driver.close();
driver.quit();
} @AfterSuite public void configAS(){scope.flush(); scope.close(); }
} *
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这段代码是一个基于Java的Selenium WebDriver测试框架的示例,它使用了ExtentReports来生成测试报告,并且包含了一些基础的测试配置和操作。下面是对这段代码功能的简要解析:
Baseclass_libraries: 这是一个公共类,作为其他测试类的基础类,封装了一些初始化、配置、以及测试前后处理的方法。
WebDriver driver: 静态变量,用于存储浏览器驱动实例,使得在所有方法中都能访问到这个浏览器实例。
fileutil flib: 一个自定义的文件工具类实例,用于读取属性文件(如浏览器类型、URL等)。
ExtentReports extent: 用于生成详细的测试报告,包括测试用例的状态、系统信息等。
@BeforeSuite configBS(): 在测试套件开始前执行,初始化ExtentReports并添加系统信息。
@BeforeClass configBc(): 在每个测试类开始前执行,根据配置选择启动Chrome、Firefox或IE浏览器,最大化窗口,设置隐式等待时间,并登录到特定的CMS系统。
Properties pobj: 用于从属性文件加载测试环境相关的配置信息,如浏览器类型、URL、用户名和密码。
PageFactory.initElements(driver, LoginPage.class): 使用Page Object模式初始化页面对象,使代码更易于维护和理解。
@AfterMethod configAm(ITestResult result): 每个测试方法结束后执行,这里模拟了登出操作。
@AfterClass configAc(ITestResult result): 测试类结束时执行,根据测试结果(成功、失败、跳过)更新ExtentReports,并关闭浏览器驱动。
@AfterSuite configAS(): 测试套件结束后执行,清理并生成最终的ExtentReports报告。
注意点: - 代码中存在一些小错误,比如if(CMS_URL.equals("https"))
和else if(CMS_URL.equals("https: "))
这样的条件判断可能不准确,通常URL应该以"http://"或"https://"开头。 - driver.quit();
被调用了两次,实际上一次就足够关闭并退出浏览器驱动。 - 对于IE驱动初始化部分,缺少了具体的IEDriverServer路径设置。 - 使用Thread.sleep()
进行线程暂停是不推荐的做法,因为它会导致测试效率降低且不够灵活,建议使用WebDriverWait或其他更高级的同步机制。
此代码片段展示了如何搭建一个基本的自动化测试框架,结合了Selenium WebDriver进行UI自动化测试和ExtentReports进行测试报告的生成。