思路:
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 ""; }