您的位置:首页 > 其它

使用反射实现 webdriver page 类

2015-01-06 09:48 281 查看
这个类的目的是为了简化page类的实例化,只需要定义public page成员变量 然后再 启动driver后 通过反射实例化page 后面可以直接点出page实例

package crazy.seleiumTools;

import java.lang.reflect.Field;

import org.openqa.selenium.WebDriver;

import crazy.tools.Dbtool;

/**
* @author xian_crazy QQ:330126160
* @version 2014年12月5日  下午1:43:29
* @see
*/
public class PageFactory {
private WebDriver driver;
private Dbtool dbtool;

public PageFactory(WebDriver driver, Dbtool dbtool) {
this.dbtool = dbtool;
this.driver = driver;
this.pageFactory();
}

public void pageFactory() {

/**
* 通过反射自动循环实例化所有public 页面
*/
Field[] f = this.getClass().getFields();
for (int i = 0; i < f.length; i++) {
try {
f[i].set(
this,
Class.forName(f[i].getType().getName())
.getConstructor(WebDriver.class, Dbtool.class)
.newInstance(driver, dbtool));

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
}
}
}

具体项目中继承改类

import org.openqa.selenium.WebDriver;

import yly.web.Page.LoginPage;
import yly.web.Page.MainMenuPage;

import crazy.seleiumTools.PageFactory;
import crazy.tools.Dbtool;

/**
* @author xian_crazy QQ:330126160
* @version 2014年11月13日 上午9:19:46
* @see
*/
public class PageF extends PageFactory{

public MainMenuPage mainMenuPage;
public LoginPage loginpage;

public PageF(WebDriver driver, Dbtool dbtool) {
super(driver, dbtool);
}

}

最后实例化一次PageF 就可以直接点出自己的page了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐