码迷,mamicode.com
首页 > 数据库 > 详细

PageFactory和@FindBy注解的使用

时间:2015-08-19 10:52:56      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

举例:博客园的登陆页面:

非PageFactory 和@FindBy的代码如下

public class LoginPage1 {
//定义三个WebElement属性,用于记录用户名、密码、登陆按钮这三个页面元素
WebDriver driver;
WebElement username;
WebElement password;
WebElement loginbutton;
public LoginPage1(WebDriver driver){
this.driver = driver;
username = driver.findElement(By.id("input1"));
password = driver.findElement(By.id("input2"));
loginbutton = driver.findElement(By.id("signin"));
}
//定义一个login()方法,用于发送用户名和密码并登陆网站
public void login(String userName,String passWord){
username.sendKeys(userName);
password.sendKeys(passWord);
loginbutton.click();
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
}

}

PageFactory 和@FindBy的代码如下

 

public class LoginPage2 {
WebDriver driver;
//在页面中的任意一个页面元素都可以使用@FindBy注解来进行标记。
//@FindBy可用于替换drive.findElement()方法的查找机制来定位页面元素
@FindBy(how = How.ID,id = "input1")
WebElement username;
@FindBy(how = How.ID,id="input2")
WebElement password;
@FindBy(how = How.ID,id="signin")
WebElement loginbutton;

public LoginPage2(WebDriver driver){
this.driver = driver;
}
public void login(String userName,String passWord){
username.sendKeys(userName);
password.sendKeys(passWord);
loginbutton.click();
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
}
}

相比而言:使用了@FindBy注解模式的代码更清晰,在构造函数里面的@FindBy(how = How.ID,id = "xx")代替了一系列driver.findElement(By.id("xx"));

举例 发送消息

非PageFactor工厂模式

public void sendMessage(String toUser,String titleConent,String textConent){
enterMessageBox();
newMessage = driver.findElement(By.linkText("撰写新短信"));
newMessage.click();
SendMessagePage1 sendMessagePage = new SendMessagePage1(driver);
sendMessagePage.sendNewMessage(toUser, titleConent, textConent);
}

PageFactor工厂模式

public void sendMessage(String toUser,String titleContent,String textConten){
enterMessageBox();
newMessage.click();
SendMessagePage2 sendMessagePage = PageFactory.initElements(driver, SendMessagePage2.class);
sendMessagePage.sendNewMessage(toUser, titleContent, textConten);
}

相比而言:使用了PageFactor工厂模式的代码更清晰, PageFactory.initElements(driver, SendMessagePage2.class)代替了new SendMessagePage1(driver);实例化

 

PageFactory和@FindBy注解的使用

标签:

原文地址:http://www.cnblogs.com/yakira/p/4741377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!