/**
* @author 作者:齐文清
* @version 创建时间:2019年6月25日 上午11:53:16
* 类说明 :用于实现在外部配置文件中配置页面元素的定位表达式
*/
package com.xes.webauto.common;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import org.openqa.selenium.By;
public class ObjectMap {
Properties properties;
public ObjectMap(String propFile) {
properties = new Properties();
try {
FileInputStream in = new FileInputStream(propFile);
properties.load(in);
in.close();
}catch( IOException e) {
System.out.println("读取对象文件出错");
e.printStackTrace();
}
}
public By getLocator(String ElementNameInpropFile) throws Exception {
//根据变量ElementNameInpropFile,从属性配置文件中读取对应的配置对象
String locator = properties.getProperty(ElementNameInpropFile);
//降配置对象中的定位类型存到locatorType变量,将定位表达式的值存入locatorValue变量
String locatorType = locator.split(">")[0];
String locatorValue = locator.split(">")[1];
/*在Ecplise中的配置文件均默认为ISO-8859-1存储编码,使用getBytes方法可以将字符串编码转换
* 为UTF-8编码,以此来解决在配置文件读取中文为乱码的问题
*/
locatorValue = new String(locatorValue.getBytes("ISO-8859-1"),("UTF-8"));
//输出验证
// System.out.println("获取的定位类型:"+locatorType + "\t 获取的定位表达式:"+locatorValue);
//根据locatorType变量值内容判断返回何种定位方式的By对象
if(locatorType.toLowerCase().equals("id"))
return By.id(locatorValue);
else if(locatorType.toLowerCase().equals("name"))
return By.name(locatorValue);
else if((locatorType.toLowerCase().equals("calssname"))||(locatorType.toLowerCase().equals("class")))
return By.className(locatorValue);
else if ((locatorType.toLowerCase().equals("tagname"))||(locatorType.toLowerCase().equals("tag")))
return By.tagName(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
throw new Exception("输入的locatorType未在程序中被定义:"+ locatorType);
}
}