`

selenium 2中的pageobject学习

 
阅读更多
  先来看下,用普通的方法如何进行webdrviver的测试


public class SimpleAmazonSearchTest {

	private FirefoxDriver driver;

	@Before
	public void setupSelenium() {
		driver = new FirefoxDriver();
	}
	
	@After
	public void closeSelenium() {
		driver.close();
		driver.quit();
	}
	
	@Test public void
	search_amazon() {
		
		driver.get("http://www.amazon.co.uk/");
		
		
		WebElement keywordsField = driver.findElement(By.name("field-keywords")); 
		keywordsField.sendKeys("iain banks");

	
		WebElement goButton = driver.findElement(By.cssSelector("#navGoButton input")); 
		goButton.click();
		
	
		WebElement topResultTitle = driver.findElement(By.cssSelector("#result_0 .title a"));
		assertThat(topResultTitle.getText(), is("Stonemouth"));
	}





  很明显,上述代码中,测试代码和被测试代码之间耦合了。如果被测试的页面本身改变了的话,那么必须改变的代码很多,因此,可以抽象出被测试代码的“定义”部分,比如:


    public class AmazonHomePage {
    public static AmazonHomePage navigateTo(WebDriver driver);
    public AmazonSearchResultsPage searchFor(String searchTerm);
}
   上面的是要在主页中寻找代码的主类,测试的目的是输入搜索结果后,
最后的结果页面,也就是可以用AmazonSearchResultsPage这个类去封装

    public class AmazonSearchResultsPage {
    public String getTopResultTitle();
}
   假设结果页面中,就只是获得页面的标题而已。

接下来是测试代码的框架:
      

      AmazonHomePage homePage = AmazonHomePage.navigateTo(driver);
AmazonSearchResultsPage resultsPage =
    homePage.searchFor("iain banks");
assertThat(resultsPage.getTopResultTitle(), is("Transition"));


     可以看到,在测试代码中,没有了和XPATH等相关的,一切需要“寻找元素”之类的东西,这样,如果页面发生变化的话,改页面类本身就可以了,不需要更改测试代码
    接下来,分别丰富两个类的代码,首先是在主页中,用注解的方式去寻找元素

 
public class AmazonHomePage {

	private WebDriver driver;
	
	@FindBy(name="field-keywords")
	private WebElement keywordsField;
	
	@FindBy(css="#navGoButton input")
	private WebElement goButton;
	
	public AmazonHomePage(WebDriver driver) {
		this.driver = driver;
	}
	
	public AmazonSearchResultsPage searchFor(String searchTerm) {
		keywordsField.sendKeys(searchTerm);
		goButton.click();
		
		return PageFactory.initElements(driver, AmazonSearchResultsPage.class);
	}

	public static AmazonHomePage navigateTo(WebDriver driver) {
		driver.get("http://www.amazon.co.uk/");
		return PageFactory.initElements(driver, AmazonHomePage.class);
	}




   
public class AmazonSearchResultsPage {

	private WebDriver driver;
	
	@FindBy(css="#result_0 .title a")
	private WebElement topResultTitle;
	
	public AmazonSearchResultsPage(WebDriver driver) {
		this.driver = driver;
	}
	
	public String getTopResultTitle() {
		return topResultTitle.getText();
	}




   上面使用的就是selenium 2中的pageobject的设计模式了
  
1
0
分享到:
评论

相关推荐

    Python+Selenium使用Page Object实现页面自动化测试

    Page Object模式是自动化测试中的一种最佳实践,尤其在Python结合Selenium进行网页自动化测试时,它能显著提高代码的可维护性和可复用性。在Page Object模式中,每个网页被视为一个独立的类,这个类封装了页面上的...

    Selenium使用PageObject模式测试登陆页面

    PageObject模式是Selenium中推荐的一种最佳实践,旨在提高测试代码的可维护性和可读性。本篇将深入探讨如何利用PageObject模式对登录页面进行测试。 PageObject模式的核心思想是将Web页面看作一个独立的对象,每个...

    pageobject(selenium基于python)

    PageObject是一种设计模式,常用于自动化测试,特别是Web应用程序的Selenium测试中。该模式的主要目的是提高代码的可维护性和可重用性,通过将页面元素和与它们相关的操作封装成独立的对象,来抽象出页面的逻辑。在...

    python+selenium+UI自动化+pageObject+pytest学习demo

    适合初级的测试开发 想要了解如何使用selenium和python编写ui自动化 并使用了Pageobject模式,和python测试框架 pytest 其中pageObject+pytest学习是用chatgpt4.0生成的。

    selenium Page Object设计模式与实战

    selenium Page Object设计模式与实战

    selenium-page-object-generator:灵活灵活的Selenium页面对象模型生成器,可提高敏捷测试过程的速度

    通过从安装软件包,也可以在命令行中使用Selenium Page Object Generator。 该模板使用表达式,这是一种简洁的无逻辑语义模板语言。 这是BETA的早期版本,预计会具有粗糙的边缘和有限的功能。 目前,它支持3个...

    python_selenium_page_object_example:Python Selenium PageObject模式实现

    PageObject模式是Selenium测试中的一种最佳实践,它帮助我们提高代码的可维护性和可重用性。下面我们将详细探讨PageObject模式的原理以及如何在Python中实现。 PageObject模式是一种设计模式,它将Web页面的逻辑与...

    Selenium之PageObject设计模式。

    在Selenium自动化测试中,PageObject设计模式是一种广泛采用的最佳实践,它有助于提高代码的可维护性和可重用性。PageObject模式的核心理念是将Web页面看作一个独立的对象,每个页面都有自己的类,其中包含了该页面...

    Selenium2自动化测试简明学习手册Java版

    **Selenium2自动化测试简明学习手册Java版** 在当今的软件开发环境中,自动化测试扮演着至关重要的角色,能够显著提高测试效率,确保产品的质量。Selenium2,也被称为WebDriver,是一个广泛使用的开源自动化测试...

    selenium2 webdriver中文文档完整

    2. 使用 Page Object 模式:使用 Page Object 模式可以简化测试代码,提高测试可维护性。 3. 使用 TestNG 组织测试:使用 TestNG 可以组织测试,提高测试效率和可维护性。 Selenium2 WebDriver 是一个强大的测试...

    SELENIUM 2 自动化测试实战 基于PYTHON语言-虫师_python自动测试_selenium2_python_自动

    2. **页面对象模型 (Page Object Model)**: 为提高代码复用性和可维护性,可以采用Page Object Model设计模式,将每个页面的元素和操作封装成独立的对象。 3. **测试框架集成**: 可以将Selenium与unittest、pytest...

    Selenium2自动化测试实战 基于Python语言

    7. **页面对象模型(Page Object Model)**:这是一种最佳实践,用于提高代码复用性和可维护性,书中可能会详细解释如何设计和实现页面对象模型。 8. **数据驱动测试**:利用CSV或其他数据源,实现测试数据和测试...

    SELENIUM 2 自动化测试实战 基于PYTHON语言

    5. **页面对象模型(Page Object Model)**:这是一种设计模式,将页面的元素和相关的行为封装在独立的对象中,提高了代码的可维护性和可重用性。 6. **等待策略**:在自动化测试中,因为页面加载时间的不确定性,...

    SELENIUM2 自动化测试实战

    在Selenium2中,Python被广泛用作编写测试脚本的语言。掌握Python的基础知识,如变量、数据类型、条件语句、循环、函数和模块,是使用Selenium2的前提。理解Python的面向对象编程(OOP)概念,如类和对象,也有助于...

    selenium相关学习资料

    此外,你还会接触到测试框架的搭建,如使用Page Object模式来提高代码的可维护性和可复用性,以及如何利用TestNG或JUnit进行测试用例管理和执行。 在学习过程中,你还会遇到模拟用户交互、处理弹框和窗口、模拟键盘...

    selenium_webdriver学习

    同时,结合Page Object模式,可以提高代码的可维护性和可重用性。 最后,"selenium_webdriverѧϰ.pdf"这个文件很可能包含了详细的教程内容,包括实例代码、截图和解释,帮助初学者一步步实践和理解Selenium ...

    Selenium2 Java自动化测试实战

    **Selenium2 Java自动化测试实战** ...通过深入学习并实践"Selenium2 Java自动化测试实战"文档,你将掌握如何使用Selenium和Java构建高效、可靠的自动化测试解决方案,为软件项目的质量保障提供强有力的支持。

    PageObject.zip

    总的来说,"PageObject.zip"中的项目是一个基于Python的自动化测试框架,它利用unittest进行测试组织,selenium进行Web交互,PageObject模式提升代码结构,同时具备了根据tag选择运行测试用例的功能,以及将测试结果...

    SELENIUM2+自动化测试实战+基于PYTHON语言.pdf

    - **框架集成**:Selenium可以与Page Object模式、Data Driven测试等框架结合,提高代码可读性和维护性。 - **并行测试**:利用多线程或进程,可以同时在多个浏览器或机器上执行测试,加快测试速度。 - **自定义...

    selenium-2.48.2

    在Selenium 2.48.2中,核心概念包括Selenium WebDriver、RC(Remote Control)和IDE(Integrated Development Environment)。WebDriver是Selenium的核心部分,提供了一种跨平台的方式来控制浏览器,并通过编程接口...

Global site tag (gtag.js) - Google Analytics