背景
自动化是为业务测试服务,如果数据与业务放在一起看起来不是专业,把数据与业务分离是完全必要的,这也是市场常见的数据驱动框架,今天咱们就聊一聊怎么搭建自己数据驱动框架。
前置条件
Appium 环境搭建成功,不会参考自动化工具之 Appium 入门文章,实在不会在参考网上怎么搭建。
主要实
UI 自动化框架元素放文本存储、数据存储、代码直接存储等其实随便那个都行,只有自己用者方便就行,我工作中用文本文件存储,这样修改方便,脚本放 SVN/Git 管理就行,UI 自动元素操作基本常见的就是 ID/NAME/XPATH 等这几种,咱们写一个工具转换类即可。
元素读取工具类
/**
* 移动端元素定位
*
* @return
* @param: name
*/
public By getLocatorApp(String name) {
String locator = properties.getProperty(name.trim());
String locatorType = locator.split(">>")[0].toLowerCase();
String locatorValue = locator.split(">>")[1];
if (locatorType != null && locatorType != null) {
logger.info("获取元素key: " + name + "\t 获取的定位类型:" + locatorType + "\t 获取的定位表达式: " + locatorValue);
// 根据 locatorType 的变量值内容判断,返回何种定位方式的 By 对象
return getkeyVule(locatorType, locatorValue);
} else {
new RuntimeException("元素没有获取到!");
return null;
}
}
/**
* 读取元素
* @param locatorType
* @param locatorValue
* @return By
*/
public By getkeyVule(String locatorType, String locatorValue) {
if ("id".equals(locatorType.toLowerCase())) {
return By.id(locatorValue);
} else if ("name".equals(locatorType.toLowerCase())) {
return By.name(locatorValue);
} else if (("classname".equals(locatorType.toLowerCase())) || ("class".equals(locatorType.toLowerCase()))) {
return By.className(locatorValue);
} else if (("tagname".equals(locatorType.toLowerCase())) || ("tag".equals(locatorType.toLowerCase()))) {
return By.className(locatorValue);
} else if (("linktext".equals(locatorType.toLowerCase())) || ("link".equals(locatorType.toLowerCase()))) {
return By.linkText(locatorValue);
} else if ("partiallinktext".equals(locatorType.toLowerCase())) {
ret