1、简单介绍

  1)展示如何封装selenium的api,使其符合我们的使用需求;

  2)展示如何使用page object模式写selenium脚本;

  3)展示如何即时查找元素,用以操作ajax页面;

2、封装selenium的api

  以下是BasePage.java的代码;

  用于展示方法,所以只封装了部分selenium的api;

 package com.ddg.fundstransfer.tools;

 import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import java.util.concurrent.TimeUnit; /**
* Created by Terry on 2017/9/27.
*/
public class BasePage {
WebDriver driver;
WebElement element;
public BasePage(WebDriver driver){
this.driver=driver;
this.driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
public WebDriver getDriver(){
return this.driver;
}
public WebElement findElement(CustomLocator locator){
if(locator.type.equals("css")) {
this.element = driver.findElement(By.cssSelector(locator.value));
}
return element;
}
public String getTitle(){
return this.driver.getTitle();
}
public void quit(){
this.driver.quit();
}
}

3、应用page object模式和即时查找元素;

 package com.ddg.fundstransfer.pages;

 import com.ddg.fundstransfer.tools.BasePage;
import com.ddg.fundstransfer.tools.CustomLocator;
import org.openqa.selenium.WebDriver; /**
* Created by Terry on 2017/9/27.
*/
public class BaiduHomePage extends BasePage {
String url = "https://www.baidu.com/";
CustomLocator userInput = new CustomLocator("css", "#kw");
CustomLocator searchBtn = new CustomLocator("css", "#su"); public BaiduHomePage(WebDriver driver){
super(driver);
super.getDriver().get(this.url);
super.getDriver().manage().window().maximize();
} public void Search(String keyword){
super.findElement(userInput).sendKeys(keyword);
super.findElement(searchBtn).click();
}
}

4、测试脚本

 package com.ddg.fundstransfer.tests;

 import com.ddg.fundstransfer.pages.BaiduHomePage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test; /**
* Created by Terry on 2017/9/27.
*/
public class TestBaiduHomePage {
WebDriver driver;
BaiduHomePage baiduPage;
@BeforeTest
public void setup(){
driver = new ChromeDriver();
baiduPage = new BaiduHomePage(driver);
}
@AfterTest
public void teardonw(){
driver.quit();
} @Test
public void testBaiduHomePage(){
baiduPage.Search("china");
System.out.print(baiduPage.getTitle());
} }

selenium java 封装的更多相关文章

  1. selenium第一课(selenium+java+testNG+maven)

    selenium介绍和环境搭建 一.简单介绍 1.selenium:Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包 ...

  2. 【原创】中文分词系统 ICTCLAS2015 的JAVA封装和多线程执行(附代码)

    本文针对的问题是 ICTCLAS2015 的多线程分词,为了实现多线程做了简单的JAVA封装.如果有需要可以自行进一步封装其它接口. 首先ICTCLAS2015的传送门(http://ictclas. ...

  3. Selenium+Java+TestNG环境配置

    1. JDK 2.eclipse+TestNG >TestNG安装.   Name:testng  Location:http://beust.com/eclipse.如图: 3.seleniu ...

  4. java封装的方法

    java封装是由Java是面向对象程序设计语言的性质决定的,面向对象程序设计语言的三大特性之一就是封装.封装其实就是包装的意思,从专业的角度来看,就是把对象的所有组成部分组合在一起,保护私有属性. 如 ...

  5. selenium+java破解极验滑动验证码的示例代码

    转自: https://www.jianshu.com/p/1466f1ba3275 selenium+java破解极验滑动验证码 卧颜沉默 关注 2017.08.15 20:07* 字数 3085  ...

  6. 行为驱动:Cucumber + Selenium + Java(二) - 第一个测试

    在上一篇中,我们搭建好了Selenium + Cucumber + Java的自动化测试环境,这一篇我们就赶紧开始编写我们的第一个BDD测试用例. 2.1 创建features 我们在新建的java项 ...

  7. 行为驱动:Cucumber + Selenium + Java(一) - 环境搭建

    1.1 什么是行为驱动测试 说起行为驱动,相信很多人听说过. 行为驱动开发-BDD(Behavior Driven Development)是一个诞生于2003年的软件开发理念.其关键思想在于通过与利 ...

  8. Selenium+Java的TestNG测试报告优化

    本博主很懒,但学习很勤快,一般能从博客园直接转载的东西,本博主绝不动手写,无奈Selenium+java生成的测试报告在百度上搜索..反正我是没有看到.后来才知道TestNG它可以自动生成测试报告,但 ...

  9. Selenium Java环境配置

    Selenium Java环境配置 上次配置的是C#的环境,今天主要来配置一下Java环境. 首先,对于java环境配置最基础的JDK和JRE 先前我做过配置,这里就不重述了,网上的教程超级多.在基础 ...

随机推荐

  1. C++Singleton的DCLP(双重锁)实现以及性能测评

      本文系原创,转载请注明:http://www.cnblogs.com/inevermore/p/4014577.html   根据维基百科,对单例模式的描述是: 确保一个类只有一个实例,并提供对该 ...

  2. 渐进式 JPEG (Progressive JPEG)来提升用户体验

    1.概述 jpg格式分为:Baseline JPEG(标准型)和Progressive JPEG(渐进式).两种格式有相同尺寸以及图像数据,扩展名也是相同的,唯一的区别是二者显示的方式不同. Base ...

  3. int a[3];中a+1与&a+1差别 -- C

    int a[3]; a 和 &a 的地址一样的. a+1 == a + 1*sizeof(int);跳跃是一个数组元素大小 &a+1 == a + 3*sizeof(int);跳跃是整 ...

  4. <转>Windows平台下Makefile学习笔记(二)

    本文转自:http://blog.csdn.net/clever101/article/details/8286066 上次我们学习了怎么用Makefile编译一个控制台工程.这次我们学习一下如何使用 ...

  5. CentOS7网络桥接模式下配置-经典完备

    原文地址:http://blog.csdn.net/youzhouliu/article/details/51175364 首先要将Vmware设置为桥接模式: 并选择宿主机连接的网路进行桥接: Ce ...

  6. Input 银行卡验证

    $("#card_num").keyup(function(){ var op=""; var t=$("#card_num").val() ...

  7. IOS与安卓的远程调试

    本地调试H5页面方案总结 http://www.jianshu.com/p/a43417b28280 Fiddler 手机抓包 http://blog.csdn.net/gld824125233/ar ...

  8. 挖一挖C#中那些我们不经常使用的东西之系列(4)——GetHashCode,ExpandoObject

    一:GetHashCode 从MSDN上能够看到的解释是:用作特定类型的哈希函数,也就是说不论什么对象的实例都会有一个int32类型的HashCode.而且存放在FCL中的 HashCollectio ...

  9. iOS swift NSClassFromString将字符串转换成类名

    在oc中将字符串转换成类名直接调用NSClassFromString("classname")即可,但是到了swift中变的麻烦多了 swift中如果要将字符串转换为类型需要以下几 ...

  10. iOS 常用图尺寸 汇总

    iCON 准备一张1024x1024尺寸的图,打开链接 http://www.atool.org/ios_logo.php 在线批量生成各种尺寸的图片 启动图LaunchImage 640x960 2 ...