Selenium-java(XML-元素管理篇)
有效的对页面元素管理有利于脚本的维护,避免修改代码引起不必要的麻烦。这里我使用到了xml对元素的管理。
<?xml version="1.0" encoding="UTF-8"?>
<!--登录页面元素-->
<LoginEleData>
<!--账号输入框-->
<property name="name_input" type="id" value="textfield-1009-inputEl"/>
<!--密码输入框-->
<property name="pwd_input" type="id" value="textfield-1010-inputEl"/>
<!--保存密码勾选框-->
<property name="save_pwd" type="id" value="checkbox-1013-inputEl"/>
<!--登录按钮-->
<property name="login_button" type="id" value="loginBtn-btnEl"/>
</LoginEleData>
这是一个举例的xml文件,我把各个元素信息写入其中。开始解析首先需要导入dom4j包。在maven项目pom文件中导入jar包。
<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
开始封装获得元素方法了。
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
public class Dom4j {
private String file;
public Document document;
private InputStream input = null;
private Map<String,String[]> eles;
public Dom4j(String file) {
this.file = file;
ClassLoader classLoader = Dom4j.class.getClassLoader();
URL resource = classLoader.getResource(file);
String path = resource.getPath();
try {
input = new FileInputStream(path);
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("打开文件错误");
}
// 创建saxReader对象
SAXReader reader = new SAXReader();
// 通过read方法读取一个文件 转换成Document对象
try {
document = reader.read(input);
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 提供关闭文件方法
*/
public void close() {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("关闭文件错误");
}
}
/**
*提供一个从xml文件获取ele数组的方法
* @return Map集合 通过name获取数组values
* 数组第一位为类型 第二位为类型值
*/
private Map<String,String[]> setele() {
Iterator<Element> elements;
Element property = null;
eles = new HashMap<String, String[]>();
//获取根节点元素对象
Element node = super.document.getRootElement();
//获得一个element列表迭代器
elements = node.elements("property").iterator();
while (elements.hasNext()) {
property = elements.next();
String[] ele =new String[2];
ele[0] = property.attributeValue("type");
ele[1] = property.attributeValue("value");
eles.put(property.attributeValue("name"),ele);
}
close();
return eles;
}
/**
* 提供一个获取element元素集合
* @return Map集合 通过name获取数组values
* 数组第一位为类型 第二位为类型值
*/
public Map<String,String[]> getele() {
return this.setele();
}
然后让我们开始获取页面的元素了。