selenium中分离页面元素(一)

         可以将一个页面或一类元素看做是一个页面对象,一个页面对象对应一个类,将元素对象的获取定义在这一个类中,页面的元素分别定义,然后分别调用,使用@FindBy(id="XX")、@CacheLookup、public WebElement XX,然后调用PageFactory.initElements()方法来初始化元素,如:将百度首页的输入框与搜索按扭这两个元素分离,编写BaiduPage类,本文使用java编写

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;

/*
 * 把百度首页的输入框与搜索按扭这两个元素分离
 * 用PageFactory.initElements()方法来初始化元素
 */

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

1、@FindBy:这个定义了你所查找的元素是以什么方式定位的,用id定位,就写成:@FindBy(id="kw"),还有其它的几种写法:

  (1)、@FindBy(name="XX");

  (2)、@FindBy(className="XX");

  (3)、@FindBy(xpath="XX");

  (4)、@FindBy(css="XX");

  等等

2、@CacheLookup:意思是说找到元素之后将缓存元素,重复的使用这些元素,将使测试的速度大大加快

3、WebElement keyword_input:就是变量名

 

接下来我们写一个测试类,分别调用BaiduPage类的keyword_input与search_button这两个元素

import org.testng.annotations.Test;
import com.suning.encapsulation.BaiduPage;
import org.testng.annotations.BeforeTest;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterTest;

public class BaiduPageTest {
	
	WebDriver driver;
  
  @Test
  public void f() {
	  //实例化BaiduPage对象
	  BaiduPage page = new BaiduPage(driver);
	  
	  //page调用BaiduPage类中keyword_input元素,然后使用元素的sendKeys方法向输入框中输入selenium
	  page.keyword_input.sendKeys("selenium");
	  
	  //page调用BaiduPage类中search_button元素,然后调用元素的click方法点击搜索按扭
	  page.keyword_input.click();
  }
  
  @BeforeTest
  public void beforeTest() {
	  driver = new FirefoxDriver();
	  driver.manage().window().maximize();
	  driver.get("http://baidu.com");
  }

  @AfterTest
  public void afterTest() {
	  driver.quit();
  }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章