java + selenium测试框架(之测试驱动) 版本演化三
来源:互联网 发布:闪电网络 原理 编辑:程序博客网 时间:2024/05/16 01:03
java + selenium测试框架(之测试驱动) 版本演化三
本节将使用properity文件来管理程序的设置,并且完成Test的基类,用于辅助测试。
增加初始化WebDriver的代码
项目中增加配置文件
在工程项目的resource下面,增加一个配置文件(selenium-vars.properties):
#WebDriverTypes or Browser to be tested: InternetExplorer Firefox Chromewebdriver.type=Firefox#Path of ChromeDriver webdriver.chrome.driver.path=lib/chromedriver.exe#Path of IEDriverwebdriver.ie.driver.path=lib/IEDriverServer.exe
读取和保存配置
然后用ConfigurationSettings来保存这些配置变量:
public class ConfigurationSettings { private static Properties props = null; private final static String SELENIUM_CONFIG="selenium-vars.properties"; static{ try { props = new Properties(); InputStream in = ConfigurationSettings.class.getClassLoader().getResourceAsStream(SELENIUM_CONFIG); props.load(in); } catch (Exception e) { throw new RuntimeException("ConfigurationSettings initialize failed.", e); } } public static String getProperty(String propertyName){ return props.getProperty(propertyName); } /** * WebDriver类型 */ public static final String WEBDRIVER_TYPE = getProperty("webdriver.type").trim(); /** * IEdriver的路径 */ public static final String WEBDRIVER_IE_DRIVER_PATH = getProperty("webdriver.ie.driver.path").trim(); /** * Chromedriver的路径 */ public static final String WEBDRIVER_CHROME_DRIVER_PATH = getProperty("webdriver.chrome.driver.path").trim();}
用DriverFactory完成初始化
下面,完成驱动程序的初始化:
public class DriverFactory { private static DriverType DEFAULT_DRIVER_TYPE = DriverType.Firefox; protected Logger logger = LoggerFactory.getLogger(getClass()); private static DriverFactory instance = null; static { instance = new DriverFactory(); } public static DriverFactory getInstance() { return instance; } public WebDriver getDriver() { DriverType type = DEFAULT_DRIVER_TYPE; try { type = Enum.valueOf(DriverType.class, ConfigurationSettings.WEBDRIVER_TYPE); } catch (Exception ex) { logger.warn("Parse WebDriver.Type failed, use default driver type: " + DEFAULT_DRIVER_TYPE.name()); logger.debug(ex.getMessage(), ex); } return type.getDriver(); }}
对应的DriverType中负责实际的驱动程序初始化:
public enum DriverType { InternetExplorer { @Override public WebDriver getDriver() { if (!StringUtils.isEmpty(ConfigurationSettings.WEBDRIVER_IE_DRIVER_PATH)) { System.setProperty(InternetExplorerDriverService.IE_DRIVER_EXE_PROPERTY,ConfigurationSettings.WEBDRIVER_IE_DRIVER_PATH); } DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer(); ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); return new InternetExplorerDriver(ieCapabilities); } }, Firefox { @Override public WebDriver getDriver() { return new FirefoxDriver(); } }, Chrome { @Override public WebDriver getDriver() { if (!StringUtils.isEmpty(ConfigurationSettings.WEBDRIVER_CHROME_DRIVER_PATH)) { System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY,ConfigurationSettings.WEBDRIVER_CHROME_DRIVER_PATH); } return new ChromeDriver(); } }; public abstract WebDriver getDriver();}
完成TestBase
public abstract class TestBase { protected Logger logger = LoggerFactory.getLogger(getClass()); protected WebDriver driver = null; /** * 用于硬性的等待 * @param seconds */ public void sleep(int seconds) { try { TimeUnit.SECONDS.sleep(seconds); } catch (InterruptedException e) { e.printStackTrace(); } } @BeforeClass(alwaysRun = true) public void setUpTestBase(ITestContext testContext) { try{ driver = DriverFactory.getInstance().getDriver(); } catch(Exception e ) { quitDriver(); Assert.fail("SetUp failed.", e); } } @AfterClass public void quitDriver() { try{ if(driver != null) driver.quit(); } finally { driver = null; } }}
Demo程序
public class BaiduMainBaseTest 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()); } @Test public void testnews(){ System.out.println(page.getCurrentUrl()); page.clickNewsIndex(); page.sleep(1); System.out.println(page.getCurrentUrl()); Assert.assertTrue(page.getCurrentUrl().contains("news.baidu.com")); }}
Page增加等待
/** * 加载页面,并等待加载完成。 * @param url */public void openAndWait(String url) { Selenium selenium = new WebDriverBackedSelenium(driver,url); driver.get(url); selenium.waitForPageToLoad("5000");}
0 0
- java + selenium测试框架(之测试驱动) 版本演化三
- java + selenium测试框架(之上传下载) 版本演化五
- java + selenium测试框架 版本演化一
- java + selenium测试框架(之等待机制) 版本演化二
- java + selenium测试框架(之截屏) 版本演化四
- java + selenium测试框架(之测试数据准备) 版本演化六
- java + selenium测试框架(之下载页面上的图片) 版本演化七
- java + selenium测试框架(之上传下载) 版本演化五-二
- java + selenium测试框架(之上传)
- java + selenium测试框架 (之进程强制关闭)
- selenium+java自动化测试框架之元素管理篇
- Web自动化测试三:selenium框架搭建
- java + selenium测试框架 (之高亮显示页面元素)
- selenium+java自动化测试框架之元素管理篇(yaml)
- selenium+java自动化测试框架之元素管理篇(yaml)
- selenium+java自动化测试框架之元素管理篇(yaml)
- java + selenium测试框架 (之校验优化,运行报错但不终止执行)
- 自动化测试框架Selenium+java+TestNG
- HDU 1281-二分图求最大匹配+删边判断
- 等频直方图预估结果集行计算公式
- CSS层叠样式表
- 有关loadDataWithBaseURL的讲解
- 分享:matlab实现车牌字符分割与识别
- java + selenium测试框架(之测试驱动) 版本演化三
- struts2文件上传下载
- JavaScript基本语法
- C#程序以管理员权限运行
- UML实践----用例图、类图、对象图、顺序图、协作图、状态图、活动图、组件图、配置图
- 变量存储类型
- NBUT 1553 Beautiful Wall
- 继承IHttpHandler实现全局图片水印
- js事件绑定 onclick && addEventListener