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. C#的结构和数组

    下面我们继续学习C#的语法.结构struct,C#中的结构和我们PLC中建立的UDT(结构体)是一样的.里面存储了相关的不同类型的数据. 有一句话我觉得十分重要:方法是依存于结构和对象存在的.这以后我 ...

  2. jQuery---固定导航栏案例

    固定导航栏案例 <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...

  3. sift代码实现详解

    1.创建高斯金字塔第-1组 1.1.将源图片转成灰度图 void ConvertToGray(const Mat& src, Mat& dst) { cv::Size size = s ...

  4. flutter loading

    在发起请求时 需要有loading页面这样可以让用户知道当前正在操作,又可以防止多次点击等误操作,所以这里就自定义了一个loading页面 菊花使用flutter_spinkit里面的菊花来代替 在需 ...

  5. the first week

    一.2019我国软件产业调研 2019年1-11月,全国软件和信息技术服务业规模以上企业4.03万家,累计完成软件业务收入64616亿元,同比增长15.5%. 从收入便可以看出软件产业的发展前景还是十 ...

  6. springboot 扫描不到包 @SpringBootApplication 自动配置原理

    解决方案 在main类中增加注解 @ComponentScan("com.test.test.*") 扫描具体的包 @ComponentScan(basePackages = {& ...

  7. C++中局部变量的返回

    在写 “根据中序和后序遍历顺序,构建树的问题” 时,原本这只是一个非常简单的问题,但是突然发现一直有错误.代码如下: node* get_root(int x1, int x2, int y1, in ...

  8. Java单体应用 - 架构模式 - 02.MVC架构

    原文地址:http://www.work100.net/training/monolithic-architecture-mvc.html 更多教程:光束云 - 免费课程 MVC架构 序号 文内章节 ...

  9. IDEA 在SVN上更新代码错误: Error:Server SSL certificate rejected

    在IDEA中更新代码到SVN中 ,出现了   Error:Server SSL certificate rejected    ---服务器的SSL证书  的错误 之前在网上有找过一些相关的做法,但是 ...

  10. Visual detection of structural changes in time-varying graphs using persistent homology

    PKU blog about this paper Basic knowledge:  1. what is time-varying graphs? time-varying graph VS st ...