先来看下,用普通的方法如何进行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的设计模式了
分享到:
相关推荐
Page Object模式是自动化测试中的一种最佳实践,尤其在Python结合Selenium进行网页自动化测试时,它能显著提高代码的可维护性和可复用性。在Page Object模式中,每个网页被视为一个独立的类,这个类封装了页面上的...
PageObject模式是Selenium中推荐的一种最佳实践,旨在提高测试代码的可维护性和可读性。本篇将深入探讨如何利用PageObject模式对登录页面进行测试。 PageObject模式的核心思想是将Web页面看作一个独立的对象,每个...
PageObject是一种设计模式,常用于自动化测试,特别是Web应用程序的Selenium测试中。该模式的主要目的是提高代码的可维护性和可重用性,通过将页面元素和与它们相关的操作封装成独立的对象,来抽象出页面的逻辑。在...
适合初级的测试开发 想要了解如何使用selenium和python编写ui自动化 并使用了Pageobject模式,和python测试框架 pytest 其中pageObject+pytest学习是用chatgpt4.0生成的。
selenium Page Object设计模式与实战
通过从安装软件包,也可以在命令行中使用Selenium Page Object Generator。 该模板使用表达式,这是一种简洁的无逻辑语义模板语言。 这是BETA的早期版本,预计会具有粗糙的边缘和有限的功能。 目前,它支持3个...
PageObject模式是Selenium测试中的一种最佳实践,它帮助我们提高代码的可维护性和可重用性。下面我们将详细探讨PageObject模式的原理以及如何在Python中实现。 PageObject模式是一种设计模式,它将Web页面的逻辑与...
在Selenium自动化测试中,PageObject设计模式是一种广泛采用的最佳实践,它有助于提高代码的可维护性和可重用性。PageObject模式的核心理念是将Web页面看作一个独立的对象,每个页面都有自己的类,其中包含了该页面...
**Selenium2自动化测试简明学习手册Java版** 在当今的软件开发环境中,自动化测试扮演着至关重要的角色,能够显著提高测试效率,确保产品的质量。Selenium2,也被称为WebDriver,是一个广泛使用的开源自动化测试...
2. 使用 Page Object 模式:使用 Page Object 模式可以简化测试代码,提高测试可维护性。 3. 使用 TestNG 组织测试:使用 TestNG 可以组织测试,提高测试效率和可维护性。 Selenium2 WebDriver 是一个强大的测试...
2. **页面对象模型 (Page Object Model)**: 为提高代码复用性和可维护性,可以采用Page Object Model设计模式,将每个页面的元素和操作封装成独立的对象。 3. **测试框架集成**: 可以将Selenium与unittest、pytest...
7. **页面对象模型(Page Object Model)**:这是一种最佳实践,用于提高代码复用性和可维护性,书中可能会详细解释如何设计和实现页面对象模型。 8. **数据驱动测试**:利用CSV或其他数据源,实现测试数据和测试...
5. **页面对象模型(Page Object Model)**:这是一种设计模式,将页面的元素和相关的行为封装在独立的对象中,提高了代码的可维护性和可重用性。 6. **等待策略**:在自动化测试中,因为页面加载时间的不确定性,...
在Selenium2中,Python被广泛用作编写测试脚本的语言。掌握Python的基础知识,如变量、数据类型、条件语句、循环、函数和模块,是使用Selenium2的前提。理解Python的面向对象编程(OOP)概念,如类和对象,也有助于...
此外,你还会接触到测试框架的搭建,如使用Page Object模式来提高代码的可维护性和可复用性,以及如何利用TestNG或JUnit进行测试用例管理和执行。 在学习过程中,你还会遇到模拟用户交互、处理弹框和窗口、模拟键盘...
同时,结合Page Object模式,可以提高代码的可维护性和可重用性。 最后,"selenium_webdriverѧϰ.pdf"这个文件很可能包含了详细的教程内容,包括实例代码、截图和解释,帮助初学者一步步实践和理解Selenium ...
**Selenium2 Java自动化测试实战** ...通过深入学习并实践"Selenium2 Java自动化测试实战"文档,你将掌握如何使用Selenium和Java构建高效、可靠的自动化测试解决方案,为软件项目的质量保障提供强有力的支持。
总的来说,"PageObject.zip"中的项目是一个基于Python的自动化测试框架,它利用unittest进行测试组织,selenium进行Web交互,PageObject模式提升代码结构,同时具备了根据tag选择运行测试用例的功能,以及将测试结果...
- **框架集成**:Selenium可以与Page Object模式、Data Driven测试等框架结合,提高代码可读性和维护性。 - **并行测试**:利用多线程或进程,可以同时在多个浏览器或机器上执行测试,加快测试速度。 - **自定义...
在Selenium 2.48.2中,核心概念包括Selenium WebDriver、RC(Remote Control)和IDE(Integrated Development Environment)。WebDriver是Selenium的核心部分,提供了一种跨平台的方式来控制浏览器,并通过编程接口...