Java+Selenium+TestNG自动化测试框架整合

1、简化代码

封装一个定位元素的类,类型为ElementLocation

package com.test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import java.util.concurrent.TimeUnit;
/**
* 每次定位元素都调用相同的方法
* 将每个方法都封装起来仅供调用
*/
public class ElementLocation {
/**
* 通过id定位元素
* @param id
* @param elementId
*/
public void finElementByID(String id, String elementId, WebDriver driver){
driver.manage().timeouts().implicitlyWait(, TimeUnit.SECONDS);
driver.findElement(By.ById.id(id)).sendKeys(elementId);
}
/**
* 通过xpath定位元素
* @param xpath
* @param text
*/
public void findElementByXpath(String xpath,String text,WebDriver driver){
driver.manage().timeouts().implicitlyWait(, TimeUnit.SECONDS);
driver.findElement(By.ByXPath.xpath(xpath)).sendKeys(text);
}
/**
* 先清除文本框内容再通过ID定位元素
* @param id
* @param text
* @param text
*/
public void findElementByIdClearSendkeys(String id,String text,WebDriver driver){
driver.manage().timeouts().implicitlyWait(, TimeUnit.SECONDS);
driver.findElement(By.ById.id(id)).clear();
driver.findElement(By.ById.id(id)).sendKeys(text);
} /**
* 先清除文本框内容再通过xpath定位元素
* @param xpath
* @param text
*/
public void findElementByXpathClearSendkeys(String xpath,String text,WebDriver driver){
driver.manage().timeouts().implicitlyWait(, TimeUnit.SECONDS);
driver.findElement(By.ByXPath.xpath(xpath)).clear();
driver.findElement(By.ByXPath.xpath(xpath)).sendKeys(text);
}
/**
* 先清除文本框内容再通过cssSelector定位元素
* @param cssSelector
* @param text
*/
public void findElementByCssClearSendkeys(String cssSelector,String text,WebDriver driver){
driver.manage().timeouts().implicitlyWait(, TimeUnit.SECONDS);
driver.findElement(By.ByCssSelector.cssSelector(cssSelector)).clear();
driver.findElement(By.ByCssSelector.cssSelector(cssSelector)).sendKeys(text);
} /**
* cssSelector点击事件
* @param cssSelector
*/
public void findElementByCssClick(String cssSelector,WebDriver driver){
driver.manage().timeouts().implicitlyWait(, TimeUnit.SECONDS);
driver.findElement(By.ByCssSelector.cssSelector(cssSelector)).click();
}
/**
* xpath点击事件
* @param xpath
*/
public void findElementByXpathClick(String xpath,WebDriver driver){
driver.manage().timeouts().implicitlyWait(, TimeUnit.SECONDS);
driver.findElement(By.ByXPath.xpath(xpath)).click();
}
}

2、整合TestNG测试框架

  1、Java整合TestNG这里用的jar包,先下载一个jar包;

  2、将jar包导入工程里面(这里导入的是IDEA)

整合部分以登录为例:

package com.test;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; public class Login {
WebDriver driver = null;
//调用上面定位元素的类
ElementLocation elementLocation = new ElementLocation();
//在所有方法运行之前运行
@BeforeMethod
public void before(){
System.setProperty("webdriver.chrome.driver", "E:\\selenium\\chromedriver.exe");
driver = new ChromeDriver();
String url = "";
driver.manage().window().maximize();
driver.get(url);
}
/**
* 定位登录界面元素
* 1.输入正确手机号码
* 2.输入正确密码
* 3.登录成功
*/
@Test
public void test_login1(){
elementLocation.findElementByCssClearSendkeys("input[type='text']","11115232323",driver);
elementLocation.findElementByCssClearSendkeys("input[type='password']","111111",driver);
elementLocation.findElementByCssClick("button[type='button']",driver);
System.out.println("登录成功,跳转到首页");
}//在所有方法运行完之后运行
@AfterMethod
public void after(){
try{
Thread thread = new Thread();
thread.sleep();
        driver.quit(); 
}catch (InterruptedException e){
e.printStackTrace();
} }
}

注:

1、提供调用定位元素的方法,还是有些复杂,在后面继续用的时候再进行优化。

2、整合TestNG  

  1、选用jar包比较方便,现在很多都不用jar包文件直接整合maven中,后面继续优化。
  2、TestNG提供了很多注解,目前只用了三个。
  @BeforeMethod:在运行一个方法之前运行该方法,仅运行一次
  @AfterMethod:在运行一个方法之后运行该方法,仅运行一次
  @Test:运行当前方法

 

  

Java+Selenium+Testng自动化测试学习(二)的更多相关文章

  1. Java+Selenium+Testng自动化测试学习(四)— 报告

    自动化测试报告,在测试用例完成之后系统自动生成HTML报告 使用testng中的报告模板生成报告, 1.在TestSuit.xml文件中配置报告监听 2.运行xml文件 3.自动生成一个test-ou ...

  2. Java+Selenium+Testng自动化测试学习(三)— 断言

    1.修改Login类加入断言: 断言:检查我们操作页面后得到的结果与我们预期的结果是否一致. 2.使用xml文件运行所有的测试类: Login类写入两个测试用例: package com.test; ...

  3. java+Selenium+TestNg搭建自动化测试架构(1)实现代码和数据的分离

    1.主要介绍介绍Java+Selenium+POM的自动化测试框架的搭建,第一个首先实现代码和账号URL等信息的分离.第二点支持跨浏览器,通过读取配置文件的方式实现. 1)将账号URL等信息添加在pr ...

  4. Java&Selenium&TestNG&ZTestReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助ZTestReport和HTML模版,生成HTML测试报告的ZTestReport 源码Clone地址为 https://github.com/zhangfei1984 ...

  5. java+Selenium+TestNg搭建自动化测试架构(3)实现POM(page+Object+modal)

    1.Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例 ...

  6. java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能

    1.切换浏览器类:其中包含了切换浏览器的方法,以及关闭浏览器,设置等待时间,以及重写的断言方法 package com.rrx.framework; import java.io.IOExceptio ...

  7. java+selenium+testNG+excel 实现 web 网页的自动化测试

    webdriver的关键字从excel读取,这样测试人员只需要在excel中填写相关用例即可 前端微站和后台系统的用例可整合在同一excel中,这样可实现前端与后台的闭循环测试 除了一些基本的校验规则 ...

  8. selenium+testNG自动化测试框架搭建

    自动化测试框架搭建 1 Java环境的搭建 1.1访问oracle的官网下载最新版本的jdk http://www.oracle.com/technetwork/java/javase/downloa ...

  9. Java&Selenium Web自动化测试框架理念

    一.自动化测试含义 在自动化测试领域内流传着一个说法:单元测试才是自动化测试的核心,在自动化测试里,无论框架何等完美都不可能脱离单元测试,单元测试将会是自动化测试里最小的单位,把它看作单位一,若干个单 ...

随机推荐

  1. JavaDay2(中)

    Java循环与分支练习 习题1: 输出1~100内前5个可以被3整除的数. public class Day2_Test1 { //输出1~100内前5个可以被3整除的数. public static ...

  2. 数据预处理 | 使用 Pandas 统一同一特征中不同的数据类型

    出现的问题:如图,总消费金额本应该为float类型,此处却显示object 需求:将 TotalCharges 的类型转换成float 使用 pandas.to_numeric(arg, errors ...

  3. eclipse中创建了web项目,src下创建子目录是平级的情况

    1.在以下可设置不同的视图 windows->show view菜单 ->点Other......    然后在搜索框里输入你想要的视图 2.在Project Explorer下创建的包看 ...

  4. Codeforce 584A - Olesya and Rodion

    Olesya loves numbers consisting of n digits, and Rodion only likes numbers that are divisible by t. ...

  5. 记录 Docker 的学习过程 (日志篇)

    日志收集 elk 在node3上操作 docker pull sebp/elk:5610 node3# sysctl vm.max_map_count=262144 node3# docker run ...

  6. 【C语言】【欢哥TV】冒泡法排序视频演示

    fromB站 点击进入:Go

  7. ASPxGridView 排序、分页、加载数据必需的三个函数

    protected void ASPxGridViewPoint_OnCustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs ...

  8. 安卓开发中遇到java.net.SocketException: Permission denied

    仅需在AndroidManifest.xml添加 <uses-permission android:name="android.permission.INTERNET" /& ...

  9. android 代码实现模拟用户点击、滑动等操作

    /** * 模拟用户点击 * * @param view 要触发操作的view * @param x 相对于要操作view的左上角x轴偏移量 * @param y 相对于要操作view的左上角y轴偏移 ...

  10. AcWing 487. 金明的预算方案

    #include <cstring> #include <iostream> #include <algorithm> #include <vector> ...