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

  如果不使用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();
}
}


 

selenium page object模式的更多相关文章

  1. 【C#|.NET】从细节出发(三) 逻辑层事务和page object模式

    一. 业务逻辑层的事务问题 如果你的程序分层清晰并且系统禁用复杂存储过程,那么在DA中的职责比较单一.程序的逻辑通过BLL调用各种不同模块的DA来实现数据操作.如果当需要不同模块在一个事务的时候,问题 ...

  2. Selenium Page Object(PO)设计模式

    Webdriver UI自动化测试火了好几年了,具体怎么设计自动化测试测试工程,组织测试用例完全凭借着自己的经验和习惯. 最近忽然听说了Page Object(简称PO)火了起来,也有面试的时候被问到 ...

  3. 转 Page Object模式

    Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通 ...

  4. UI自动化测试的Page Object模式

    在UI级的自动化测试框架中,当页面样式改变或者页面元素属性改变,那么代码也要随之进行修改,如何做到高效快速的修改代码来适应这些改变呢,这个时候可以引入Page Object模式,也是页面对象设计模式. ...

  5. 浅析selenium的page object模式

    selenium目前比较流行的设计模式就是page object,那么到底什么是page object呢,简单来说,就是把页面作为对象,在使用中传递页面对象,来使用页面对象中相应的成员或者方法,能更好 ...

  6. python+selenium自动化软件测试(第7章):Page Object模式

    什么是Page ObjectModel模式Page Objects是selenium的一种测试设计模式,主要将每个页面看作是一个class.class的内容主要包括属性和方法,属性不难理解,就是这个页 ...

  7. 使用page object模式抓取几个主要城市的pm2.5并从小到大排序后写入txt文档

    #coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...

  8. Page Object 模式编写UiAutomator脚本

    在我们学习Page Object Model之前,我们先了解一下Page Object Model(以下简称POM). 为什么要POM 用UiAutomator启动UI自动化测试不是一件困难的任务.你 ...

  9. selenium page object model

    Page Object Model (POM) & Page Factory in Selenium: Ultimate Guide 来源:http://www.guru99.com/page ...

随机推荐

  1. 关于 lerp();

    value lerp(value s, value a, value b ); 该函数返回的值为:a + s * (b - a) ,是一个处于 [a, b] 之间的值. 当s=0, 该函数返回a :当 ...

  2. 1.4 C++内联函数(inline)

    参考:http://www.weixueyuan.net/view/6330.html C++语言新增关键字 inline,用于将一个函数声明为内联函数.在程序编译时,编译器会将内联函数调用处用函数体 ...

  3. L1-038 新世界

    这道超级简单的题目没有任何输入. 你只需要在第一行中输出程序员钦定名言“Hello World”,并且在第二行中输出更新版的“Hello New World”就可以了. 输入样例: 无 输出样例: H ...

  4. L1-018 大笨钟

    微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉.不过由于笨钟自己作息也不是很规律,所以敲钟并不定时.一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那 ...

  5. 爱宝A-1180热转印条码打印机 打印乱码,对不齐的问题

    本文记录了在使用打印机打印时出现的问题 上线对齐... 1拆开后看了.机械.没有问题. 2考虑打印设置.. 发现问题不大 3询问官网. 重新安装驱动 重新换纸张. ·条码机_win xp.7.8.10 ...

  6. compile——生成ast

    刘涛 生成ast的函数是src/compiler/parser/index.js文件中的parse函数, 从这里入手,我们一起来看看一段html字符串,是如何一步步转换成抽象语法树的. 这一部分会涉及 ...

  7. 【Android 】查看被测应用程序package和launchable-activity

    [appt] appt 工具所在位置..\sdk\build-tools\23.0.1\aapt.exe #查看Package>aapt dump badging C:\QQemail.apk ...

  8. PHP发明人谈MVC和网站设计架构

    PHP是全世界上使用率最高的网页开发语言,台湾每4个网站,就有1个用PHP语言开发.1995年发明PHP语言的Rasmus Lerdorf,也是打造出Yahoo全球服务网站的架构师之一,他首度来台分享 ...

  9. 如何查看linux系统的版本信息

    前言 有时候需要查看linux系统的版本信息,本文将对此简单介绍. 方法 1.输入"uname -a ",可显示电脑以及操作系统的相关信息. 2.输入"cat /etc/ ...

  10. 在python中的使用

    操作步骤: 1. 连接数据库,生成数据库连接对象 conn = pymongo.MongoClient('localhost',27017) 2. 选择要操作的数据库,生成数据库对象 (__setit ...