Web自动化框架搭建2
上一篇 / 下一篇 2015-04-13 14:03:00 / 个人分类:自动化-selenium
/**
* 模拟Hover动作
* @param locator
* @note 暂时只支持ChromeDriver
*/
Selenium2.0本身就是原生提供mouseOver这个函数的。但是,至少在2.18.0,这个API还是一个废材。。。
public void mouseOver(String locator) {
pause();
waitForElementPresent(locator);
以下这段代码似乎不是很灵光,优化进行中。。。
// Hover
WebElement we = BrowserCore.findElement(By.xpath(locator));
Actions builder = new Actions(BrowserCore);
builder.moveToElement(we).build().perform();
return;
}
/**
* 在Flash中点击元素
* @param flashID flash本身在网页中ID
* @param targetName 目标元素在flash中Name
*/
关于Flash自动化,我将另开一文讲解(传送门:http://qa.blog.163.com/blog/static/19014700220121278928634/),里面会用到JS执行器。
public void flexClick(String flashID, String targetName) {
}
/**
* 获取Flash中元素左上角的(浏览器,非屏幕)坐标
* @param flashID flash本身在网页中ID
* @param targetName 目标元素在flash中Name
* @return 坐标[x,y]
*/
public int[] flexGetPosition(String flashID, String targetName) {
}
/**
* 设置BrowserEmulator各次操作之间的时间间隔,单位毫秒
*/
Selenium2.0原生提供setSpeed函数,用以控制用例执行速度,但是,至少至2.18.0,这个API还是个废材。。。只好自己实现一个。
基本上调试的时候会把步长设为500毫秒,真正运行时设为0毫秒。
private void pause() {
此处使用万恶的Thread.sleep
}
从这里开始是几个元素定位和判断的函数,所谓用例自然要有判定,才有成功与失败之分,此处省略N行代码。。。
/**
* 页面元素定位
* @param locator 暂时只支持xpath,后续考虑支持更多形式,如:id,name
*/
private void waitForElementPresent(final String locator) {
int Timeout = Integer.parseInt(GlobalSettings.Timeout);
try {
new Wait() {
public boolean until() {
return Browser.isElementPresent(locator);
}
}.wait("*** 页面元素(" + locator + ")定位失败 ***", Timeout);
} catch (Exception e) {
Assert.fail("*** 页面元素(" + locator + ")定位失败 ***");
// TODO 更多自定义信息打印
}
}
再讲GlobalSettings
不说了,很短小
* 全局变量设置
* @author 尘泥
*/
public class GlobalSettings {
/**
* 设置浏览器类型
* 1 FireFox
* 2 Chrome
**/
public static int BrowserCoreType = 2;
public static String ChromeDriverPath = "res/chromedriver.exe";
// BrowserEmulator各次操作之间的时间间隔,单位毫秒
public static String StepInterval = "500";
// BrowserEmulator等待超时时间,单位毫秒
public static String Timeout = "30000";
}
最后是PageElement
对页面元素做了简单封装,可以使元素定位清晰一些。
* 用于页面元素定位
* @author 尘泥
*/
public class PageElement {
// 页面元素Xpath
TAG: