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. ping百度不通的解决方案

    1.ping  www.baidu.com unknow baidu.com 第一步,确定是否能ping通网关 第二步,确定是否能直接ping通外网 如ping 8.8.8.8 第三步,如果上面两个都 ...

  2. mongo: 索引

    索引创建 在学习索引之前,我们先看一下,如果没有添加索引时,我们用explain()函数,查看查询计划是什么样的. 发现使用的是BasicCursor,那么就代表我们没有索引,当我们查某一个数据的时候 ...

  3. MySQL查询缓存设置提高MySQL查询性能

    首先看看MSYQL逻辑框架:图片来自高性能mysql 如果使用了QueryCache,当查询接收到一个和之前同样的查询,服务器将会从查询缓存中检索结果,而不是再次分析和执行相同的查询.这样就能大大提高 ...

  4. Codeforces548E:Mike and Foam

    Mike is a bartender at Rico's bar. At Rico's, they put beer glasses in a special shelf. There are n  ...

  5. 程序员不修复BUG怎么办

    在测试过程中,难免遇到开发人员因为一些原因不想修改个别bug的情况.遇到这种问题时,该如何去推进开发修改bug呢? 一.现状分析 1.开发人员为啥不愿意修复BUG? (1)开发与测试对bug的定义理解 ...

  6. Objective-C中的关联(objc_setAssociatedObject,objc_getAssociatedObject,objc_removeAssociatedObjects)

    关联的概念 所谓的关联,字面意思是把两个相关的对象放在一起,实际也是如此.把两个对象相互关联起来,使得其中的一个对象成为另外一个对象的一部分,这就是关联. 关联的作用 使用Category,我们可以给 ...

  7. Java 下载JDK账号

    目前在官网下载低于jdk1.8的Javajdk的时候需要登陆,这边分享一个账号,方便下载 账号:2696671285@qq.com 密码:Oracle123 javajdk下载地址:点击打开链接

  8. the reactor pattern and java nio

    在<java NIO>作者PPT<How to Build a Scalable Multiplexed Server With NIO> 和 Doug Lea <Sca ...

  9. PLSQL中显示Cursor、隐示Cursor、动态Ref Cursor差别

    一.显式cursor 显式是相对与隐式cursor而言的,就是有一个明白的声明的cursor.显式游标的声明类似例如以下(具体的语法參加plsql ref doc ): cursor cursor_n ...

  10. C++中没有定义类的引用。

    在有时候由于类太大.须要在类在后面定义: 比如: class Y{ void f(X); }; class X{ //一些成员数据和函数 }; //error 由于c++要求不论什么一个变量在引用之前 ...