zoukankan      html  css  js  c++  java
  • selenium page object模式

      页面对象模式将测试代码和被测试页面的元素及操作进行分离,以降低页面元素的变化对测试代码的影响。每个被测试的页面都会被定义一个类,类中会定位元素和操作。

      如果不使用page object模式,则相同的操作(查找元素和及相应的点击、输入)需要重复多次。如果页面元素发生变化,则需修改多处;万一设计该元素的操作存在多个文件,其工作量就大大增加。封

    使用pageFactory类给测试代码提供待操作元素

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.support.FindBy;
    import org.openqa.selenium.support.PageFactory;
    //百度页面搜索
    public class searchObject {
    @FindBy(id = "kw")
    public WebElement searchKey;
    @FindBy(id = "su")
    public WebElement searchButton;
    @FindBy(css = "span.nums_text")
    public WebElement searchResult;
    public searchObject(WebDriver driver){
    PageFactory.initElements(driver,this);
    }
    }

    创建测试类
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.Assert;
    import org.testng.annotations.*;

    import java.util.concurrent.TimeUnit;

    //将要写的搜索功能转化为page object
    public class SeleniumWork2 {
    WebDriver driver;
    @BeforeMethod
    public void beforeC(){
    String chromepath =System.getProperty("user.dir") + "/src/driver/chromedriver";
    System.setProperty("webdriver.chrome.driver",chromepath);
    driver = new ChromeDriver();
    driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
    driver.get("http://baidu.com");
    }
    @Test
    public void search1th(){
    searchObject search1 = new searchObject(driver);
    search1.searchKey.sendKeys("appium");
    search1.searchButton.click();
    Assert.assertTrue(search1.searchResult.getText().contains("百度为您找到相关结果"));
    System.out.println(search1.searchResult.getText());
    }
    @Test
    public void search2th(){
    searchObject search1 = new searchObject(driver);
    search1.searchKey.sendKeys("selenium");
    search1.searchButton.click();
    Assert.assertTrue(search1.searchResult.getText().contains("百度为您找到相关结果"));
    System.out.println(search1.searchResult.getText());
    }
    @AfterMethod
    public void tearDown(){
    driver.close();
    }
    }

    
    
     
  • 相关阅读:
    java 集合list遍历时删除元素
    循环中的continue功能
    sql中的!=判断的注意事项
    oracle中时间处理
    judge return character
    ashamed
    char and number transform
    将十进制转化为二进制
    算法和程序
    输入分子和分母,打印出前1000位小数
  • 原文地址:https://www.cnblogs.com/csj2018/p/9220996.html
Copyright © 2011-2022 走看看