java + selenium测试框架(之截屏) 版本演化四
来源:互联网 发布:cf抽奖算法 编辑:程序博客网 时间:2024/06/05 07:37
java + selenium测试框架(之截屏) 版本演化四
截屏工具
public class ScreenShotUtil { public static void ScreenShoter(WebElement driver,String filePathName) { File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); try { FileUtils.copyFile(screenShotFile, new File(filePathName)); } catch (IOException e) { e.printStackTrace(); } }}
如果想进行截屏,则在测试用例中调用即可。
在testng中自动截屏
为了能够在testng的用例结束时,设置自动截屏,或者在测试失败时截屏,可以使用org.testng.TestListenerAdapter来实现。
public class ScreenShotListener extends TestListenerAdapter { protected Logger logger = LoggerFactory.getLogger(getClass()); protected ITestContext testContext = null; public String getTestName(ITestResult it){ return it.getTestClass().getName() +"."+ it.getName()+it.getEndMillis(); } @Override public void onStart(ITestContext testContext) { this.testContext = testContext; super.onStart(testContext); } @Override public void onFinish(ITestContext testContext) { this.testContext = null; super.onFinish(testContext); } @Override public void onTestSuccess(ITestResult tr) { logger.info("TestSuccess:" + getTestName(tr)); String path = ConfigurationSettings.SCREENSHOT_SUCESS_PATH + "/" + getTestName(tr)+".png"; WebDriver driver = (WebDriver) testContext.getAttribute(ConfigurationSettings.SELENIUM_DRIVER); ScreenShotUtil.ScreenShoter(driver, path); super.onTestSuccess(tr); } @Override public void onTestFailure(ITestResult tr) { logger.info("TestFailure:"+ getTestName(tr)); String path = ConfigurationSettings.SCREENSHOT_ERROR_PATH + "/" + getTestName(tr)+".png"; WebDriver driver = (WebDriver) testContext.getAttribute(ConfigurationSettings.SELENIUM_DRIVER); ScreenShotUtil.ScreenShoter(driver, path); super.onTestFailure(tr); }}
这时,需要在TestBase中,增加testContext:
protected ITestContext testContext = null;@BeforeClass(alwaysRun = true)public void setUpTestBase(ITestContext testContext) { try{ driver = DriverFactory.getInstance().getDriver(); this.testContext = testContext; testContext.setAttribute(ConfigurationSettings.SELENIUM_DRIVER, driver); } catch(Exception e ) { quitDriver(); Assert.fail("SetUp failed.", e); }}
在测试用例中,增加监听器注解:
@Listeners({ScreenShotListener.class})public class BaseTestWithListener extends TestBase { BaiduMainPage page = null; @BeforeMethod public void initPage() { String path = "http://www.baidu.com/"; page = new BaiduMainPage(driver); page.openAndWait(path); PageFactory.initElements(driver, page); } @Test public void testSearch(){ String text="apple"; page.SearchText(text); sleep(1); System.out.println(driver.getTitle()); Assert.assertTrue(driver.getTitle().contains(text)); System.out.println(page.getCurrentUrl()); } }
当然,为了让截屏的路径可配置,需要修改properties配置文件和ConfigurationSetting:
selenium-vars.properties
#screenshot path if error occurscreenshot.error.path=error-screenshot#screenshot path if successscreenshot.auto.path=auto-screenshot
ConfigurationSettings.java
public final static String SELENIUM_DRIVER="SELENIUM_DRIVER";public static final String SCREENSHOT_ERROR_PATH = getProperty("screenshot.error.path").trim();public static final String SCREENSHOT_SUCESS_PATH = getProperty("screenshot.auto.path").trim();
0 0
- java + selenium测试框架(之截屏) 版本演化四
- java + selenium测试框架(之上传下载) 版本演化五
- java + selenium测试框架 版本演化一
- java + selenium测试框架(之测试驱动) 版本演化三
- java + selenium测试框架(之等待机制) 版本演化二
- java + selenium测试框架(之测试数据准备) 版本演化六
- java + selenium测试框架(之下载页面上的图片) 版本演化七
- java + selenium测试框架(之上传下载) 版本演化五-二
- java + selenium测试框架(之上传)
- java + selenium测试框架 (之进程强制关闭)
- selenium+java自动化测试框架之元素管理篇
- java + selenium测试框架 (之高亮显示页面元素)
- selenium+java自动化测试框架之元素管理篇(yaml)
- selenium+java自动化测试框架之元素管理篇(yaml)
- selenium+java自动化测试框架之元素管理篇(yaml)
- java + selenium测试框架 (之校验优化,运行报错但不终止执行)
- 自动化测试框架Selenium+java+TestNG
- PatatiumWebUi下载导入部署 (java+selenium 基于selenium webdriver 自动化测试框架)
- 新手学习Linux下的c++编程
- POJ-2370
- html的<script>脚本:JavaScript入门
- mysql 导入大的sql文件
- [cocos2dx笔记004] android增加静态库工程
- java + selenium测试框架(之截屏) 版本演化四
- 终端之1_对终端进行读写
- 忘记 Linux虚拟机的密码
- 进程和线程
- CSS样式导入的三个方法
- 堆和栈的区别(转过无数次的文章)
- Ugly Numbers
- UVA 10312 - Expression Bracketing(数论+Catalan数)
- Linux find命令详解和实例说明