【框架】PageObject(一)

1.目的:为了将元素的find方法和业务逻辑分开来。如果元素的页面位置发生了变化,只需改动一个文件,而不影响业务的实现。

2.原理:一般一个页面对应一个class,在class里描述所有要用到的webelement。通过PageFactory.initWebElement(Webdriver d,this)的方法来实例化页面对象。

每次在用到一个元素的时候,会在当前页面搜索,如果第二次再用到这个元素,则会再次寻找。如果一个元素在页面的任何地方都不会变,则可以再@FindBy方法的下方写上@CacheLookup,则会被缓存起来,这样可以提高搜索效率

3.例子:登录163邮箱,在163的写信页面,先点击写信按钮,然后在收件人里填写对应信息

//【1】元素类---登录页面

public class Login163VO {
 @FindBy(id="idInput")
 public WebElement username ;
 
 @FindBy(id="pwdInput")
 public WebElement password ;
 
 @FindBy(id="loginBtn")
 public WebElement loginBtn ;
 
 public Login163VO(WebDriver driver){
  PageFactory.initElements(driver,this);
 }

}

//【2】元素类---写信页面

public class Send163VO {

//通过xpath方法,找到写信按钮
 @FindBy(xpath="//div[@id='dvNavTop']/ul/li[2]")

//把该按钮缓存起来
 @CacheLookup
 public WebElement xiexin ;

//通过xpath方法,找到收件人输入框。这个按钮是点击写信按钮后才显示的。但是使用PageObject方法不受影响,因为在使用到该元素时,才会去搜索,并且调用该元素,是在点击了写信按钮以后
 @FindBy(xpath="//div[@id='divComposeto']/div/div/div[2]/div/input")
 public WebElement shoujianren;
 //使用PageObject方法,实例化页面元素
 public Send163VO(WebDriver driver){
  PageFactory.initElements(driver, this);
 }
}

//【3】测试类--使用了testng
public class Test163 {
 WebDriver driver = null;
 Login163VO t = null;
 Send163VO s = null;
 
 @BeforeClass
 public void setUp(){
  driver= new FirefoxDriver();
  driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  driver.get("http://mail.163.com");
 }
 
    @Test
    public void testLogin163() throws InterruptedException { 
     t = new Login163VO(driver);
     t.username.sendKeys("name@163.com");
     t.password.sendKeys("pass");
     t.loginBtn.click();
    Thread.sleep(3000); 
  }
   
    @Test
    public void testXiexin163(){
     s = new Send163VO(driver);
     s.xiexin.click();
     s.shoujianren.sendKeys("name@126.com");
   }
   

 @Test(enabled=false)//不会执行的类,暂时没有实现好的类
    public void tearDown(){
     driver.quit();
   }

}

转载于:https://www.cnblogs.com/Jourly/p/3699203.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值