修改元素获取机制
This commit is contained in:
parent
52f05d8741
commit
bf549f3f32
22
pom.xml
22
pom.xml
|
@ -116,5 +116,27 @@
|
|||
<version>1.13.1</version>
|
||||
</dependency>
|
||||
|
||||
<!--spring aop + aspectj 切面-->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-aop</artifactId>
|
||||
<version>5.2.7.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-core</artifactId>
|
||||
<version>5.2.7.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>aspectjrt</artifactId>
|
||||
<version>1.9.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>aspectjweaver</artifactId>
|
||||
<version>1.9.5</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -12,19 +12,10 @@ import pres.auxiliary.work.selenium.event.ClickEvent;
|
|||
import pres.auxiliary.work.selenium.event.TextEvent;
|
||||
|
||||
public class Event {
|
||||
/**
|
||||
* 存储WebDriver对象
|
||||
*/
|
||||
private WebDriver driver;
|
||||
|
||||
/**
|
||||
* 用于进行单一元素获取
|
||||
*/
|
||||
private CommonBy commonBy;
|
||||
/**
|
||||
* 用于进行列表元素获取
|
||||
*/
|
||||
private DataListBy dataListBy;
|
||||
/**
|
||||
* 用于进行选项元素获取
|
||||
*/
|
||||
|
@ -39,16 +30,26 @@ public class Event {
|
|||
*/
|
||||
private TextEvent textEvent;
|
||||
|
||||
/**
|
||||
* 用于执行当前需要切换的xml文件对象
|
||||
*/
|
||||
private File xmlFile;
|
||||
/**
|
||||
* 用于指向是否需要切换到顶层
|
||||
*/
|
||||
private boolean isBreakRootFrame;
|
||||
/**
|
||||
* 存储WebDriver对象
|
||||
*/
|
||||
private WebDriver driver;
|
||||
|
||||
/**
|
||||
* 初始化{@link WebDriver}对象
|
||||
* @param driver {@link WebDriver}对象
|
||||
*/
|
||||
public Event(WebDriver driver) {
|
||||
this.driver = driver;
|
||||
|
||||
//初始化元素获取类
|
||||
commonBy = new CommonBy(driver);
|
||||
dataListBy = new DataListBy(driver);
|
||||
selectBy = new SelectBy(driver);
|
||||
|
||||
//初始化元素操作类
|
||||
|
@ -71,8 +72,10 @@ public class Event {
|
|||
*/
|
||||
public void switchXmlFile(File xmlFile, boolean isBreakRootFrame) {
|
||||
commonBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
dataListBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
selectBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
|
||||
this.xmlFile = xmlFile;
|
||||
this.isBreakRootFrame = isBreakRootFrame;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -91,7 +94,8 @@ public class Event {
|
|||
* @param keys 需要替换的定位方式内容的关键词
|
||||
*/
|
||||
public void click(String name, int index, String...keys) {
|
||||
dataListBy.clearColumn(name, true);
|
||||
DataListBy dataListBy = new DataListBy(driver);
|
||||
dataListBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
dataListBy.add(name, keys);
|
||||
clickEvent.click(dataListBy.getElement(name, index));
|
||||
}
|
||||
|
@ -108,16 +112,18 @@ public class Event {
|
|||
/**
|
||||
* 用于根据元素名称对列表元素进行双击事件
|
||||
* @param name 元素名称
|
||||
* @param index 元素所在下标
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
*/
|
||||
public void doubleClick(String name, int index, String...keys) {
|
||||
dataListBy.clearColumn(name, true);
|
||||
DataListBy dataListBy = new DataListBy(driver);
|
||||
dataListBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
dataListBy.add(name, keys);
|
||||
clickEvent.doubleClick(dataListBy.getElement(name, index));
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据元素名称对单一元素进行双击事件
|
||||
* 用于根据元素名称对单一元素进行右击事件
|
||||
* @param name 元素名称
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
*/
|
||||
|
@ -128,11 +134,139 @@ public class Event {
|
|||
/**
|
||||
* 用于根据元素名称对列表元素进行右击事件
|
||||
* @param name 元素名称
|
||||
* @param index 元素所在下标
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
*/
|
||||
public void rightClick(String name, int index, String...keys) {
|
||||
dataListBy.clearColumn(name, true);
|
||||
DataListBy dataListBy = new DataListBy(driver);
|
||||
dataListBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
dataListBy.add(name, keys);
|
||||
clickEvent.rightClick(dataListBy.getElement(name, index));
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据元素名称对单一元素进行连续点击事件
|
||||
* @param name 元素名称
|
||||
* @param clickCount 点击次数
|
||||
* @param sleepInMillis 操作时间间隔,单位为毫秒
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
*/
|
||||
public void continuousClick(String name, int clickCount, long sleepInMillis, String...keys) {
|
||||
clickEvent.continuousClick(commonBy.getElement(name), clickCount, sleepInMillis);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据元素名称对列表元素进行连续点击事件
|
||||
* @param name 元素名称
|
||||
* @param clickCount 点击次数
|
||||
* @param sleepInMillis 操作时间间隔,单位为毫秒
|
||||
* @param index 元素所在下标
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
*/
|
||||
public void continuousClick(String name, int index, int clickCount, long sleepInMillis, String...keys) {
|
||||
DataListBy dataListBy = new DataListBy(driver);
|
||||
dataListBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
dataListBy.add(name, keys);
|
||||
clickEvent.continuousClick(dataListBy.getElement(name, index), clickCount, sleepInMillis);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据控件名称清除单一控件的内容
|
||||
* @param name 控件名称
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
* @return 被清除的内容
|
||||
*/
|
||||
public String clear(String name, String...keys) {
|
||||
return textEvent.clear(commonBy.getElement(name));
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据控件名称清除列表控件的内容
|
||||
* @param name 控件名称
|
||||
* @param index 元素所在下标
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
* @return 被清除的内容
|
||||
*/
|
||||
public String clear(String name, int index, String...keys) {
|
||||
DataListBy dataListBy = new DataListBy(driver);
|
||||
dataListBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
dataListBy.add(name, keys);
|
||||
return textEvent.clear(dataListBy.getElement(name, index));
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据控件名称获取单一控件指定属性的内容
|
||||
* @param name 控件名称
|
||||
* @param attributeName 属性名称
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
* @return 控件属性的内容
|
||||
*/
|
||||
public String getAttributeValue(String name, String attributeName, String...keys) {
|
||||
return textEvent.getAttributeValue(commonBy.getElement(name), attributeName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据控件名称获取列表控件指定属性的内容
|
||||
* @param name 控件名称
|
||||
* @param index 元素所在下标
|
||||
* @param attributeName 属性名称
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
* @return 控件属性的内容
|
||||
*/
|
||||
public String getAttributeValue(String name, int index, String attributeName, String...keys) {
|
||||
DataListBy dataListBy = new DataListBy(driver);
|
||||
dataListBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
dataListBy.add(name, keys);
|
||||
return textEvent.getAttributeValue(dataListBy.getElement(name, index), attributeName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据控件名称获取单一控件的内容
|
||||
* @param name 控件名称
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
* @return 控件的内容
|
||||
*/
|
||||
public String getText(String name, String...keys) {
|
||||
return textEvent.getText(commonBy.getElement(name));
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据控件名称获取列表控件的内容
|
||||
* @param name 控件名称
|
||||
* @param index 元素所在下标
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
* @return 控件的内容
|
||||
*/
|
||||
public String getText(String name, int index, String...keys) {
|
||||
DataListBy dataListBy = new DataListBy(driver);
|
||||
dataListBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
dataListBy.add(name, keys);
|
||||
return textEvent.getText(dataListBy.getElement(name, index));
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据控件名称对单一控件进行输入
|
||||
* @param name 控件名称
|
||||
* @param text 输入的内容
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
* @return 输入到控件的内容
|
||||
*/
|
||||
public String input(String name, String text, String...keys) {
|
||||
return textEvent.input(commonBy.getElement(name), text);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据控件名称获取列表控件的内容
|
||||
* @param name 控件名称
|
||||
* @param index 元素所在下标
|
||||
* @param text 输入的内容
|
||||
* @param keys 需要替换的定位方式内容的关键词
|
||||
* @return 输入到控件的内容
|
||||
*/
|
||||
public String input(String name, int index, String text, String...keys) {
|
||||
DataListBy dataListBy = new DataListBy(driver);
|
||||
dataListBy.setXmlFile(xmlFile, isBreakRootFrame);
|
||||
dataListBy.add(name, keys);
|
||||
return textEvent.input(dataListBy.getElement(name, index), text);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,6 +79,16 @@ public abstract class AbstractBy {
|
|||
browserHandles = this.driver.getWindowHandle();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过{@link AbstractBy}对象对类进行构造,将传入的AbstractBy类中的关键参数设置到当前类对象中
|
||||
* @param brower {@link AbstractBy}对象
|
||||
*/
|
||||
public AbstractBy(AbstractBy by) {
|
||||
this.brower = by.brower;
|
||||
this.driver = by.driver;
|
||||
this.xml = by.xml;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过浏览器对象{@link AbstractBrower}进行构造
|
||||
* @param brower {@link AbstractBrower}对象
|
||||
|
|
|
@ -39,6 +39,14 @@ public class CommonBy extends AbstractBy {
|
|||
public CommonBy(AbstractBrower brower) {
|
||||
super(brower);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过{@link AbstractBy}对象对类进行构造,将传入的AbstractBy类中的关键参数设置到当前类对象中
|
||||
* @param brower {@link AbstractBy}对象
|
||||
*/
|
||||
public CommonBy(AbstractBy by) {
|
||||
super(by);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据xml文件中元素的名称,返回对应的{@link Element}对象。该方法亦可传入元素
|
||||
|
|
|
@ -76,6 +76,14 @@ public class DataListBy extends ListBy {
|
|||
super(driver);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过{@link AbstractBy}对象对类进行构造,将传入的AbstractBy类中的关键参数设置到当前类对象中
|
||||
* @param brower {@link AbstractBy}对象
|
||||
*/
|
||||
public DataListBy(AbstractBy by) {
|
||||
super(by);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于设置首行元素是否为标题元素
|
||||
* @param isFristRowTitle 首行是否为标题元素
|
||||
|
|
|
@ -45,6 +45,14 @@ public abstract class ListBy extends MultiBy {
|
|||
super(driver);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过{@link AbstractBy}对象对类进行构造,将传入的AbstractBy类中的关键参数设置到当前类对象中
|
||||
* @param brower {@link AbstractBy}对象
|
||||
*/
|
||||
public ListBy(AbstractBy by) {
|
||||
super(by);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回列表名称对应的元素个数,若该列未被获取,则返回-1
|
||||
* @param name 被获取的列名称
|
||||
|
|
|
@ -39,6 +39,14 @@ public abstract class MultiBy extends AbstractBy {
|
|||
super(driver);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过{@link AbstractBy}对象对类进行构造,将传入的AbstractBy类中的关键参数设置到当前类对象中
|
||||
* @param brower {@link AbstractBy}对象
|
||||
*/
|
||||
public MultiBy(AbstractBy by) {
|
||||
super(by);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于根据传入的元素在xml文件中的名称或者元素的定位内容,添加元素。由于该方法不指定元素的定位
|
||||
* 方式,若传入的参数不是xml元素且非xpath路径或绝对css路径时,其识别效率较慢,建议在该情况下
|
||||
|
|
|
@ -73,27 +73,31 @@ public class SelectBy extends MultiBy {
|
|||
private boolean fristIsEmpty = false;
|
||||
|
||||
/**
|
||||
* 通过浏览器对象{@link AbstractBrower}进行构造,并指定第一个选项是否为空选项或者为“请选择”等文本
|
||||
* 的选项,若为该选项时,则在随机选择时不会选择到该选项
|
||||
* 通过浏览器对象{@link AbstractBrower}进行构造
|
||||
*
|
||||
* @param brower {@link AbstractBrower}对象
|
||||
* @param fristIsEmpty 指定第一个元素是否为空串或为“请选择”等文本
|
||||
*/
|
||||
public SelectBy(AbstractBrower brower) {
|
||||
super(brower);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造对象并存储浏览器的{@link WebDriver}对象,并指定第一个选项是否为空选项或者为“请选择”等文本
|
||||
* 的选项,若为该选项时,则在随机选择时不会选择到该选项
|
||||
* 构造对象并存储浏览器的{@link WebDriver}对象
|
||||
*
|
||||
* @param driver 浏览器的{@link WebDriver}对象
|
||||
* @param fristIsEmpty 指定第一个元素是否为空串或为“请选择”等文本
|
||||
*/
|
||||
public SelectBy(WebDriver driver) {
|
||||
super(driver);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过{@link AbstractBy}对象对类进行构造,将传入的AbstractBy类中的关键参数设置到当前类对象中
|
||||
* @param brower {@link AbstractBy}对象
|
||||
*/
|
||||
public SelectBy(AbstractBy by) {
|
||||
super(by);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(String name, ByType byType) {
|
||||
elementInfo = new ElementInformation(name, byType);
|
||||
|
|
|
@ -74,6 +74,10 @@ public class CommonByTest {
|
|||
File xmlFile = new File("src/test/java/pres/auxiliary/work/selenium/element/测试文件.xml");
|
||||
ce.setXmlFile(xmlFile, false);
|
||||
System.out.println(ce.getElement("单位名称").getWebElement().getText());
|
||||
|
||||
DataListBy d = new DataListBy(ce);
|
||||
d.add("单位名称");
|
||||
System.out.println(d.getElement("单位名称", 1).getWebElement().getText());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue