Selenium2之Page_Object模式

为什么要使用page-object

? 集中管理元素对象

? 集中管理一个page内的公共方法

? 后期维护方便

 集中管理元素对象

? 实现方法:

1     public static By input = By.xpath("//input[@type=‘text‘]");
2     public static By check = By.xpath("//input[@type=‘checkbox‘]");

? 调用方法:

  WebElement element = driver.findElement(Test7.input);

Page类的实现

? 目的:

  有了page类后,在具体的脚本中,要用到哪个page,就new这个page的对象,然后调用里面的公共方法即可

? 实现方法:

 1 public class Page{
 2     protected WebDriver Driver;
 3     public Page(WebDriver Driver)
 4     {
 5         this.Driver=Driver;
 6     }
 7
 8     private boolean waitToDisplayed(final By key){
 9         boolean waitToDisplayed=new WebDriverWait(Driver,10).until(new ExpectedCondition<Boolean>(){
10             public Boolean apply(WebDriver d){
11                 return d.findElement(key).isDisplayed();
12             }
13         });
14         return waitToDisplayed;
15     }
16
17
18     protected WebElement getElement(By key){
19         WebElement element=null;
20         if(this.waitToDisplayed(key)){
21             element=Driver.findElement(key);
22         }
23         return element;
24     }
25 }

? 说明:

  Page类是一个基础类,其它的Page类都要继承该类,比如:

 1 public class DemoPage extends Page {
 2
 3     public static By input = By.xpath("//input[@type=‘text‘]");
 4     public static By check = By.xpath("//input[@type=‘checkbox‘]");
 5     public static By radio = By.xpath("//input[@type=‘radio‘]");
 6     public static By action = By.xpath("//*[@id=‘action‘]/input");
 7     public static String iframe = "in";
 8
 9
10     public DemoPage(WebDriver Driver)
11     {
12         super(Driver);
13     }
14
15     public void input(WebDriver Driver,String message){
16         WebElement element=this.getElement(input);
17         element.sendKeys(message);
18     }
19
20     public void input_clear(WebDriver Driver){
21         WebElement element=this.getElement(input);
22         element.clear();
23     }
24
25 }

  在具体的脚本中的使用方法:

 1 public class day7Test {
 2     private WebDriver Driver;
 3   @Test
 4   public void RobotFream() {
 5       DemoPage dp=new DemoPage(Driver);
 6       dp.input(Driver, "i love yuezi");
 7       dp.input_clear(Driver);
 8   }
 9   @BeforeClass
10   public void beforeClass() {
11       System.setProperty("webdriver.firefox.bin", "D:/Mozilla Firefox/firefox.exe");
12         Driver=new FirefoxDriver();
13         Driver.manage().window().maximize();
14         Driver.navigate().to("file:///C:/Users/zhanghm/Desktop/Alert.html");
15
16   }
17
18   @AfterClass
19   public void afterClass() {
20       Driver.close();
21       Driver.quit();
22   }
23
24 }

Page-object的优点

  •   脚本代码更加整洁
  •   可读性更高
  •   维护方便
时间: 2024-10-25 10:15:51

Selenium2之Page_Object模式的相关文章

Selenium2+python自动化39-关于面试的题

前言 最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下, 回答不妥的地方欢迎各位高手拍砖指点. 一.selenium中如何判断元素是否存在? 首先selenium里面是没有这个方法的,判断元素存在需要自己写一个方法了. 元素存在有几种形式,一种是页面有多个元素属性重复的,这种直接操作会报错的:还有一种是页面隐藏的元素操作也会报错 判断方法参考这篇:Selenium2+python自动化36-判断元素存在 二.selenium中hidden或者是displa

【Selenium2+Java自动化(2)】-启动浏览器

1.常用的浏览器有IE,Chrome,FireFox:其中IE和Chrome浏览器需要下载驱动程序,才能启动浏览器.注意驱动程序有32和64位的区别.如何查看本机的浏览器版本和位数:(1)IE:打开IE浏览器,然后点击右上角的"齿轮"设置图标:在下拉菜单中,点击"关于Internet Explorer":这时会弹出一个窗口分别显示IE浏览器的版本及位数:窗口中显示的就是IE浏览器的版本及位数,其中32位IE 没有位数显示,而64位IE浏览器则显示 64-bit .

基于Selenium2与Python自动化测试环境搭建

简介: selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点: *  免费,也不用再为破解QTP而大伤脑筋 *  小巧,对于不同的语言它只是一个包而已,而QTP需要下载安装1个多G 的程序. *  这也是最重要的一点,不管你以前更熟悉C. java.ruby.python.或都是C# ,你都可以通过selenium完成自动化测试,而QTP只支持VBS *  支持多平台:windows.linux.MAC ,支持多浏览器:

【转】Selenium2(WebDriver)总结(一)---启动浏览器、设置profile&amp;加载插件

基本读踩过的坑,泪流满面··· 本文主要记录下在使用selenium2/webdriver时启动各种浏览器的方法.以及如何加载插件.定制浏览器信息(设置profile)等 环境搭建可参考我的另一篇文章:http://www.cnblogs.com/puresoul/p/3483055.html 一.Driver下载地址: http://docs.seleniumhq.org/download/ 二.启动firefox浏览器(不需要下载驱动,原生支持) 1.firefox安装在默认路径下: 1 /

Selenium WebDriver 之 PageObjects 模式 by Example

目录 1. 项目配置 2. 一个WebDriver简单例子 3. 使用Page Objects模式 4. 总结 5. Troubleshooting 6. 参考文档 本篇文章通过例子来阐述一下Selenium2.0 WebDriver 之 Page Objects模式. 项目配置 maven 3, pom.xml配置如下 <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>s

selenium2+python学习笔记(一)自动化测试环境的搭建

selenium2+python 自动化测试环境的搭建 1.准备工作 1.1.搭建平台:Windows 1.2.准备工具如下: 下载python:http://python.org/getit/ 下载setuptools[python的基础包工具]:http://pypi.python.org/pypi/setuptools 下载pip[python的安装包管理工具]:https://pypi.python.org/pypi/pip 下载selenium:https://pypi.python.

Selenium2(WebDriver)总结(一)---启动浏览器、设置profile&amp;加载插件

本文主要记录下在使用selenium2/webdriver时启动各种浏览器的方法.以及如何加载插件.定制浏览器信息(设置profile)等 环境搭建可参考我的另一篇文章:http://www.cnblogs.com/puresoul/p/3483055.html 一.Driver下载地址: http://docs.seleniumhq.org/download/ 二.启动firefox浏览器(不需要下载驱动,原生支持) 1.firefox安装在默认路径下: 1 //启动默认安装路径下的ff 2

Selenium2启动浏览器且加载插件

一.SELENIUM2启动浏览器 注意: SELENIUM2在启动浏览器时,都是启动一个干净的没有任务 插件及cookies信息的浏览器,即使是你之前的浏览器有设置过代理,到自动化启动时,也是没有代理的模式. 1.启动firefox浏览器: 启动不在默认安装路径的firefox浏览器: 2.启动chrome浏览器: 需要chromedriver.exe的支持,驱动下载地址(http://docs.seleniumhq.org/download/) 如果不想用setProperty的方式,也可以将

Python3+Selenium2完整的自动化测试实现之旅(五):自动化测试框架、Python面向对象以及POM设计模型简介

前言 之前的系列博客,陆续学习整理了自动化测试环境的搭建.IE和Chrome浏览器驱动的配置.selenium-webdriver模块封装的元素定位以及控制浏览器.处理警示框.鼠标键盘等方法的使用,这些内容还需要后续多加练习掌握,以达到灵活运用的程度.but,这仅仅只是开始,说明咱们能够使用selenium框架下的webdriver写出一个个测试用例脚本,也仅仅写给自己看看,如果需要写100条.1000条测试脚本,并能够高效快速的编写完成并批量执行,且要看到完整的执行结果,失败多少,成功多少,等