zoukankan      html  css  js  c++  java
  • Selenium2(java)页面对象模型(Page Object) 八

    在开发一个 Selenium WebDriver 测试,我们可以使用页面对象模型。这个模型可以使测

    试脚本有更高的可维护性,减少了重复的代码,把页面抽象出来。对象模型也提供了一个注释,帮助缓存远程,避免出现元素过期的问题。

    分类页面元素

    1. 新建java项目selenium_po,导入testng和selenium类库
    2. 新建一个page包和一个test包用于存放测试用例
    3. 在page包中新建一个BDPage.java用于存取元素

    具体代码:

    package page;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.support.CacheLookup;
    import org.openqa.selenium.support.FindBy;
    import org.openqa.selenium.support.PageFactory;
    
    public class BDPage {
    
        //定义元素变量
        /**定义百度搜索的输入框*/
        @FindBy(id="kw")
        @CacheLookup    
        public WebElement keyword_input;
        
        /**定义百度搜索的搜索按钮*/
        @FindBy(id="su")
        @CacheLookup
        public WebElement search_button;
        
        //创建一个构造函数,并且调用PageFactory.initElements()方法来初始化元素。换句话说,将元素映射到我们定义好的变量上。
        public BDPage(WebDriver driver) {
            
            PageFactory.initElements(driver, this);
        }
    
    }

    分离页面操作

    新建页面类:HaoSouPage.java

    具体代码:

    package page;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.CacheLookup;
    import org.openqa.selenium.support.FindBy;
    import org.openqa.selenium.support.PageFactory;
    
    public class HaoSouPage {
    
        /**输入框*/
        @FindBy(name="q")
        @CacheLookup
        private WebElement HSP_INPUT_KEYWORD;
        
        /**搜索按钮*/
        @FindBy(id="search-button")
        @CacheLookup
        private WebElement HSP_BUTTON_SEARCH;
        
        //定义测试地址
        private final String url = "http://www.haosou.com/";
        private static WebDriver driver;
        
        //提供一个外部获得driver的方法
        public WebDriver getDriver(){
            
            return driver;
        }
        
        public void HaoSoupage() {
            
            driver = new FirefoxDriver();
            PageFactory.initElements(driver, this);
        }
        
        public void close() {
            
            driver.quit();
        }
        
        public void openUrl() {
            driver.get(url);
        }
        
        //输入关键字selenium并点击查询
        public void searchByKeyword() {
            HSP_INPUT_KEYWORD.sendKeys("test");
            HSP_BUTTON_SEARCH.click();
        }
    }

    新建测试类:HaoSouPageTest.java

    具体代码:

    package test;

    import org.testng.annotations.Test;
    import page.HaoSouPage;
    
    public class HouSouPageTest {
      @Test
      public void searchTest() {
       
       //实例化haosou页面对象模型
       HaoSouPage hsp = new HaoSouPage();
       
       //使用页面封装的打开链接方法
       hsp.openUrl();
       
       //使用页面封装的输入操作
       hsp.searchByKeyword();
       
       //使用页面封装的退出操作哦
       hsp.close();
      }
    }

    页面嵌套对象:

    HaoSouPage.java :存储页面元素,相关操作以及嵌套ResultPage对象

    ResultPage.java : 存储页面元素以及相关操作

    HaoSouPageTest: 执行测试,检查结果

    HaoSouPage.java

    具体代码:

    package com.po.page;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.CacheLookup;
    import org.openqa.selenium.support.FindBy;
    import org.openqa.selenium.support.PageFactory;
    
    public class HaoSouPage {
    
        /**@描述:好搜输入框*/
        @FindBy(name="q")
        @CacheLookup
        private WebElement HSP_INPUT_KEYWORD;
        /**@描述:好搜搜索按钮*/
        @FindBy(id="search-button")
        @CacheLookup
        private WebElement HSP_BUTTON_SEARCH;
        //定义测试地址
        private final String url = "http://www.haosou.com/";
        private static WebDriver driver ;
        //提供一个外部获得driver的方法
        public static  WebDriver getDriver(){
            return driver;
            }
    
        //构造方法初始化元素
        public void HaoSouPage(){
            driver = new FirefoxDriver();
            PageFactory.initElements(driver, this);
            }
    
        //包装退出方法
        public void close(){
            driver.quit();
            }
    
        //打开网址
        public void openUrl(){
            driver.get(url);
            }
    
        //输入关键字selenium并点击查询,并且返回到搜索界面
        public ResultPage searchByKeyword(String keyword){
            HSP_INPUT_KEYWORD.sendKeys(keyword);
            HSP_BUTTON_SEARCH.click();
            return new ResultPage();
            }
        }

    ResultPage.java

    具体代码:

    package com.po.page;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.support.CacheLookup;
    import org.openqa.selenium.support.FindBy;
    import org.openqa.selenium.support.PageFactory;
    import org.testng.Assert;
    
    public class ResultPage {
        /**搜索结果界面的搜索框*/
        @FindBy(id="keyword")
        @CacheLookup
        private WebElement RP_INPT_KEYWORD;
    
        //构造方法初始化元素
        public ResultPage(){
            PageFactory.initElements(HaoSouPage.getDriver(), this);
            }
    
        /**验证输入框的字是不是Selenium*/
        public void checkKeyword(){
            //Assert是TestNG提供的一个断言操作,assertEquals(实际值,期望值),判断两个值是不是相等的。
            Assert.assertEquals(RP_INPT_KEYWORD.getAttribute("value"), "selenium");
            }
        }

    HaoSouPageTest.java

    具体代码:

    package com.po.testcase;
    import org.testng.annotations.Test;
    import com.po.page.HaoSouPage;
    
    public class HaoSouPageTest {
        @Test
        public void searchTest(){
        //实例化haosou页面对象模型
        HaoSouPage hsp =new HaoSouPage();
        //使用页面封装的打开链接方法
        hsp.openUrl();
        //使用页面封装的输入操作,验证搜索结果输入框页面的值是不是selenium
        hsp.searchByKeyword("selenium").checkKeyword();
        //使用页面封装的退出操作
        hsp.close();
        }
    }
  • 相关阅读:
    看完两本书
    今夜,有点难过
    学习总结
    杂谈改变个人习惯
    最近一个月的工作学习总结
    lab项目之一阿森纳赛事指南客户端版本
    工资类程序数据库处理讨论 [数据加载(二)]
    SQL数值倍率实现问题....
    想用GDI+2.0做设计器,但在实现过程中遇到大麻烦
    这几天做工资类程序郁闷了,想写点东西理一下思路
  • 原文地址:https://www.cnblogs.com/sundalian/p/5164728.html
Copyright © 2011-2022 走看看