千家信息网

APP自动化框架学习:读取配置文件,并判断定位方式

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,思路:1,创建一个配置文件,配置文件内写入 "元素的名称=定位的方式>元素的id/name/xpath表达式",例:"locator=name>登录"2,创建个读取配置文件的类ProUtilTest
千家信息网最后更新 2026年11月03日APP自动化框架学习:读取配置文件,并判断定位方式

思路:

1,创建一个配置文件,配置文件内写入 "元素的名称=定位的方式>元素的id/name/xpath表达式",例:"locator=name>登录"

2,创建个读取配置文件的类ProUtilTest ,使用java中的Properties类,读取Java的配置文件

3,判断定位的方式,使用split()方法取出"locator=name>登录"中的"name"和"登录"

4,对split()方法取出来的定位方式,进行判断,返回相应的By类型,用于之后的定位元素

5,继续学习完善中。。。


/**判断定位方式工具类*/
public class GetByLoctorTest {

/**
*读取配置文件
*@param key String 定位方式
* */
public static By getLocator(String key){

//ProUtilTest类是读取配置文件的(见下文的图),使用构造方法时,需传入配置文件的路径
//文件的路径可以单独写一个类,进行配置
ProUtilTest properties = new ProUtilTest("configs/login.properties");

//从属性配置文件中读取相应的配置对象
//配置文件写的格式:"locator=name>登录"
String locator = properties.getPro(key);

//将配置对象中的定位类型存在locatorType变量,将定位表达式的值存入到locatorValue变量
//[0]为>的左边 [1]为>的右边
String locatorType = locator.split(">")[0];//取出>前的name
String locatorValue = locator.split(">")[1];//取出登录

//输出locatorType变量值和locatorValue变量值,验证是否赋值成功
System.out.println("获取的定位类型:"+locatorType+"获取的定位表达式:"+locatorValue);

//根据locatorType的变量值内容判断,返回何种定位方式的By对象
//toLowerCase() 方法用于把字符串转换为小写
if(locatorType.toLowerCase().equals("id")){
return By.id(locatorValue);
}else if(locatorType.toLowerCase().equals("name")){
return By.name(locatorValue);
}else if ((locatorType.toLowerCase().equals("classname")) || (locatorType.toLowerCase().equals("class"))){
return By.className(locatorValue);
}else if((locatorType.toLowerCase().equals("tagname")) || (locatorType.toLowerCase().equals("tag"))){
return By.className(locatorValue);
}else if ((locatorType.toLowerCase().equals("linktext")) || (locatorType.toLowerCase().equals("link"))){
return By.linkText(locatorValue);
}else if (locatorType.toLowerCase().equals("partiallinktext")){
return By.partialLinkText(locatorValue);
}else if ((locatorType.toLowerCase().equals("cssselector")) || (locatorType.toLowerCase().equals("css"))){
return By.cssSelector(locatorValue);
}else if (locatorType.toLowerCase().equals("xpath")){
return By.xpath(locatorValue);
}else{
try{
throw new Exception("输入的 locator type 未在程序中被定义:" + locatorType);
}catch(Exception e){
e.printStackTrace();
}
}
return null;

}
}




/**配置文件读取类*/
public class ProUtilTest {

private String filePath;
private Properties prop;//Properties类,读取Java的配置文件

public ProUtilTest(String filePath){
this.filePath = filePath;
this.prop=readProperties();
}

public Properties readProperties(){
Properties properties = new Properties();

try {
InputStream ins = new FileInputStream(filePath);
BufferedReader bf=new BufferedReader(new InputStreamReader(ins,"utf-8"));
properties.load(bf);
ins.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return properties;

}

//containsKey()判断是否有相对应的key
public String getPro(String key){
if(prop.containsKey(key)){
return prop.getProperty(key);
}else{
System.out.println("获取的键不存在");
}
return "";
}

配置 文件 定位 方式 登录 方法 元素 对象 类型 表达式 量值 变量 路径 学习 成功 从属性 内容 右边 名称 字符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网和科技技术 科技平台互联网 互联网科技深圳 河南真二互联网科技有限公司 互联网科技未来 互联网金融科技创新 互联网科技公司的市场部门 博兴的互联网电子科技公司 欧洲十大科技互联网公司 互联网金融中的现代科技 武汉健翔互联网络科技有限公司 民营互联网公司国防科技 乌鲁木齐新华智原互联网科技学校 明优互联网科技有限公司 众安科技工业互联网合作 小米互联网科技园入驻 新氧科技和美国互联网有关系吗 互联网界的黑科技 互联网对科技影响 互联网科技创新方面的资料 西安纸贵互联网科技有限公司 朗新科技与工业互联网 安徽鑫晟辉互联网科技 米客互联网科技 长亮科技 互联网金融 深圳卡尔迅互联网科技有限公司怎么样 互联网科技与大数据专业 玉溪新华互联网科技好不好 盐城市攀科互联网科技有限公司 利用互联网等科技手段
0