JAVA自动化测试
文章平均质量分 72
自动化测试,基于Java语言
雨停江南Lujier
一切随缘,一切随心, 不怀疑自我,不违背良心, 那就昂首挺胸往前走就好, 其它就交给上天~
展开
-
4.2 APP_UI ----Appium工具介绍以及元素定位
一、 Appium自动化四原则:1 没有必要为了自动化而重新编译你的应用或者以任何方式修改它 Android/iOS系统自带框架2 不应该被限制在特定的语言和框架上来编写运行用例 WebDriver API一、 客户端-服务器协议(称为JSON Wire Protocol) http-command3 移动端自动化框架在自动化接口方面不应该重造轮子,find_element\click send_keys WebDriver --- Web浏览自动原创 2020-09-27 11:30:50 · 426 阅读 · 0 评论 -
4.1 APP_UI ---- ADB常用命令以及启动参数说明
一. 移动端自带框架: iOS 9.3 及其以上: 苹果的XCUITest (基本用这个)iOS 9.3及以下: 苹果的UIAutomationAndroid4.2+: 谷歌的UiAutomation (基本用这个)Android2.3+ : 谷歌的Instrumentation(通过绑定另外的项目---- Selendroid Instrumentation的支持) - 不需要把Appium特定的或者第三方的代码编译进你的应用 - 意味着你测试使用...原创 2020-09-27 11:01:59 · 747 阅读 · 0 评论 -
4.0 APP_UI自动化 ----- 环境准备(Windows)
一、Appium 介绍: 开源,跨平台,多语言支持的移动应用自动化工具 测试对象: 原生App 混合(Hybrid) app 移动web app 测试对象APP运行平台:IOS Android Windows FirefoxOS 测试对象APP运行环境:真实设备,模拟器 测试程序语言: Python.Java.Ruby.js,PHP,c# 测试程序运行平台: Windows,Linux,Mac,OS...原创 2020-09-27 10:47:39 · 321 阅读 · 0 评论 -
3.13 Web自动化 --- PO设计思想介绍
一 、 PO 是什么页面对象模型(PO)是一种设计模式,全称(Page Object),用来管理维护一组web元素的对象库 在PO下,应用程序的每一个页面都有一个对应的page class 每一个page class维护着该web页的元素集和操作这些元素的方法 page class中的方法命名最好根据对应的业务场景进行,例如通常登录后我们需要等待几秒钟, 多用于UI自动化测试(例: Web ,APP等)二、代码结构1. PageObject层页面对象内容同包含: ...原创 2020-09-23 13:39:32 · 1218 阅读 · 0 评论 -
3.12 Web自动化---- 自动化背景与测试流程
一、 自动化测试背景1、 什么是自动化测试? 机器替代手工测试,自动测验结果是否符合预期2、 自动化测试能够带来什么? 替代大量重复性工作,减轻双手工作量 提高回归测试效率,适合敏捷测试 在非工作时间自动执行,工作时间查看测试报告 保证每次测试执行的一致性与正确性,避免人为错误3、 自动化测试劣势? 一般用于回归测试 不能完全替代手工测试 自动化测试环境依赖性较...原创 2020-09-22 05:47:20 · 877 阅读 · 0 评论 -
3.11 Web自动化 --- 鼠标操作、文件上传
一、 鼠标操作1. 引入: 在自动化测试过程中,有些元素不适合直接点击或者进行某些操作时,就可以使用selenium库中的Action类来模拟鼠标操作,通过Action类(java),ActionChains(java)可以发起拖拽,移动等操作,最后使用perform进行执行操作2. 方法介绍:主要操作流程: 1. 存储鼠标操作 2. perform()来执行鼠标操作支持的操作如下: python中用法:...原创 2020-09-22 05:10:04 · 418 阅读 · 0 评论 -
3.10 Web自动化 ---- js修改元素属性、页面滑动
一、 时间日期控件允许输入时间 控件如果没有限制手动输入,则直接可以使用sendKeys(或send_keys)方法写入时间数据 空间有设置限制输入,那么就不能sendKey操作了,需要先js修改元素value属性 如:https://www.12306.cn/index/网站日期输入框1. Window窗口Console控制台修改readOnly属性 仅对本次生效,页面刷新之后,日期空间input就又不允许手动输入了:2. Python代...原创 2020-09-22 02:19:35 · 790 阅读 · 0 评论 -
3.9 Web自动化 --- radio单选、checkbox多选、select下拉框
一、 radio 单选按钮和checkbox多选按钮 1. 概述: radio单选按钮: 允许用户多选一: 在多个选项中,仅允许选择一个(type=radio) checkbox多选按钮: 支持在多个选项中多选择(type=checkbox) 2 . 操作方法: 跟普通元素定位一样,定位选择框,点击选择 查看当前选项是否被选择,可以用如下方法 ele.is...原创 2020-09-18 14:55:14 · 2352 阅读 · 0 评论 -
3.8 Web自动化 ----- Alert、Window、Iframe切换
一、 对话框1. 概述 是指用户想要对对话框以外的应用程序操作时,必须先对对话框进行响应,如单击【确定】或【取消】按钮将该对话框关闭2. 对话框分类 1) alert警告框 2) confirm确认框 3) 通过div显示在页面最上层的内容3. 对话框的操作 1) alert,confirm等对话框的操作 当要操作页面上的alert警告框时,必须先获取到此alert警告框 ...原创 2020-09-17 14:06:50 · 277 阅读 · 0 评论 -
3.7 Web自动化 --- 元素三大等待方式
一、死等,硬等待 -- sleep 1. python用法 参数以秒为单位import timetime.sleep(3)2. java用法 参数以毫秒为单位Thread.sleep(3000);3. 优点缺点 1) 优点: 使用简单 2) 缺点: 无论元素是否找到,都会等待所设置的时间,容易造成时间浪费二、 隐式等待 --- implicityWait()1. python用...原创 2020-09-15 19:42:28 · 544 阅读 · 0 评论 -
3.6 Web自动化 ---- 常用API(WebElement 和WebDriver对象常用)
一、 WebElement对象API常用API1. 常用基本API2. 键盘输入操作3. python代码练习import timefrom SeleniumWeb import openBrowserfrom selenium.webdriver.common.by import By# 键盘使用from selenium.webdriver.common.keys import Keysdriver = openBrowser.openBrowser("Chrom.原创 2020-09-15 16:09:28 · 307 阅读 · 0 评论 -
3.5 WEB自动化 --- Xpath定位方式
一、 Xpath(XML Path Language)相关概念 是W3c定义的用来在XML文档中选择节点的语言主流浏览器也支持Xpath对于浏览器原声支持XPATH,Selenium尽量使用原声的Xpath实现,有些浏览器也支持Xpath访问xpath的语法类似与电脑文件系统的路径二、 绝对定位与相对定位绝对定位: 从根目录开始,以“/”开头,严格按照层级,同级元素位置: 太死,容错性差相对定位: 不依靠位置和层级,只需要一个参照物,根据这个参照物,来确定指定元素的位置...原创 2020-09-11 19:55:33 · 572 阅读 · 0 评论 -
3.4 WEB自动化 ---- CSS方式定位元素
一、 常用元素定位表达式二、如何判断当前元素的css 元素定位内容对不对1). 快捷键: CTRL+F 然后在搜索框内内容输入定位元素的内容,查看位置是否是预想中的位置2) . console中进行查询:$$("input[name='wd']") 然后回车即可...原创 2020-09-11 19:37:10 · 281 阅读 · 0 评论 -
3.3 Web自动化 ---- 元素定位(基本定位方式)
常见元素定位方式: 通过id(一般id唯一) : By.id 通过元素name属性来定位: By.name 通过元素标签名来获取元素: By.tagName 通过元素class属性值来定位: By.className 通过元素超链接的文本值来获取元素: By.linkText 通过元素超链接的部分文本值来获取元素: By.partialLinkText...原创 2020-09-11 11:35:02 · 1298 阅读 · 0 评论 -
3.2 WEB自动化UI ------ selenium自动化工作原理以及环境准备
介绍 Selenium IDE 是一个Firefox/Chrome插件,用于记录和回放用户与浏览器的交互,使用它来创建简单的脚本和协助进行探索性测试。安装: 下载地址: https://www.selenium.dev/downloads/...原创 2020-09-10 18:23:44 · 367 阅读 · 0 评论 -
3. 1 WEB自动化 --- WEB前端知识简介
前端前端即网站前台部分,运行在PC端,移动端等浏览器上展现给用户浏览的网页和界面。前端开发中最基本也是最必须的三个技能。前端的开发中,在页面的布局时,HTML:页面结构:可以把他看成一个文档,定义展示页面的内容结构。CSS:页面表现:元素大小、颜色、位置、隐藏或显示、部分动画效果。JavaScript:页面行为:部分动画效果、页面与用户的交互、页面功能一、HTMLHTML: 超文本标记语言,是 网页制作必备的编程语言**“**[超文本]HTML 版本**HTML 2.0 :**是原创 2020-09-08 18:10:52 · 2018 阅读 · 0 评论 -
2.13 接口自动化 ---TestNG结合allure生成测试报告
一、 allure 使用基本准备: 1. 学习网站: https://docs.qameta.io/allure/#_testng 2. allure 的 Maven坐标(pom.xml自行添入) <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-testng</artifactI...原创 2020-09-02 20:59:58 · 1483 阅读 · 1 评论 -
2.12 接口自动化 --- 日志记录Log4j
一、Log4j引入 日志: 在项目中,用来记录系统的行为,以便更好的跟踪系统中的一些交互和问题 Log4j是一个日志框架,配置简单,功能强大,记录起来方便二、 应用前准备工作 1. Maven坐标写入pom.xml文件中<!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency> <groupId>log4j</groupId...原创 2020-09-02 13:48:34 · 351 阅读 · 0 评论 -
2 . 11 接口自动化 --- 接口依赖 &用例参数化
一、 接口文档说明 综上: 充值接口 依赖登录接口返回的用户id信息二 、 接口依赖处理 & 用例参数化处理1. 思路: 1) 接口依赖: 登录接口请求成功后,从响应体中提取用户id信息保存下来,充值接口传参时member_id传 登录接口提取的用户id 2) 用例参数化: a. 用例数据动态数据,如: 用户数据,用变量替代 ...原创 2020-09-01 20:50:32 · 1832 阅读 · 0 评论 -
2. 10 接口自动化 ---- 数据库连接 与查询(DBUtils使用)
一、 前提了解1. JDBC 驱动程序 JDBC(java database connectivity)驱动程序是对 JDBC 规范完整的实现,它的存在在 Java 程序与数据库系统之间建立了一条通信的渠道2. Maven坐标 <!-- mysql数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connect...原创 2020-09-01 12:09:06 · 456 阅读 · 0 评论 -
2. 9 接口自动化 --- 结果回写与断言 (初级断言)
按照之前所讲的,我们Excel用例只写了: 用例编号,用例描述,对应接口编号,接口传参,且接口函数只实现了接口发送请求,对于接口响应断言 & 接口回写操作却并未做处理,这一节,就来实现一、 接口断言--- 目前仅考虑响应断言(数据库不考虑)...原创 2020-08-27 00:03:39 · 2264 阅读 · 0 评论 -
2 . 8 接口自动化 --- 授权、鉴权 以及实例说明
一、 接口授权,鉴权相关概念1. 什么是授权,什么是鉴权授权: 相当于给一个通行证,由服务器下发鉴权: 鉴定是否有权限访问(判断有没有通行证)2. 目前最常用三种认证机制...原创 2020-08-25 12:28:48 · 1039 阅读 · 0 评论 -
2 . 7 接口自动化--- EasyPOI读取Excel优化 + TestNG (结合篇)
一、EasyPOI读取Excel代码优化 1. 优化原因: 查看 2.6 篇章, 可看到: 1) API与用例获取方法, 大体逻辑相同,就个别参数不一样; 2) 用例设计涉及到了用例与接口的关联字段(用例表单中API_No和API表单中API_NO),基于2.6篇章,那么接口测试 该怎样拿到测试数据还未解决。 2. 优化代码如下:public ...原创 2020-08-21 19:52:49 · 537 阅读 · 0 评论 -
2. 6 接口自动化 - Excel(Easy POI ) 映射
一、 Excel读写引用库替换为Easy POI 原因: Easy POI更简单(具体可对比下方代码跟2.5中Excel读取代码) Easy POI学习地址:http://easypoi.mydoc.io/ 1. 引入库如下:2. Maven 坐标 <dependency> <groupId>cn.afterturn</groupId> <...原创 2020-08-20 20:22:19 · 969 阅读 · 1 评论 -
2.5 接口自动化 -- Excel(POI) + TestNG.DataPrvider + HttpClient ( 结合篇)
初步实现:Excel接口用例管理 + TestNG用例参数化一、 注册接口说明如下二、 接口用例设计(Excel读取用例)1. Excel中用例如下:2. Excel 读取封装ExcelUtilspackage com.lujier.utils;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;impo...原创 2020-08-19 00:03:52 · 567 阅读 · 0 评论 -
2.4 Java自动化之HttpClient发送请求
一、HttpClient 简介 HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议学习官网文档:http://www.httpclient.cn/cainiao.pdf二、 如何结合httpclient发送请求第一步: 修改Maven项目下pom.xml<project xmlns="http://maven.a...原创 2020-08-18 03:42:20 · 457 阅读 · 0 评论 -
2.3 TestNG之参数化DataProvider
package com.testng.base;import org.testng.Assert;import org.testng.annotations.Parameters;import org.testng.annotations.Test;/*** TODO* @File: NoNG.java * @Author: Lujier @SINCE: 2020年8月14日 上午3:08:06 * @Phone: 15934815829 @E...原创 2020-08-14 23:14:24 · 220 阅读 · 0 评论 -
2. 2 TestNG之注释说明与testng.xml标签说明
package com.testng.base;import org.testng.annotations.Test;public class NewTest { @Test public void f1() { System.out.println("NewTest---测试类函数 f1()---被Test装饰"); } @Test public void f2() { System.out.println("NewTest----函数...原创 2020-08-14 21:04:02 · 290 阅读 · 1 评论 -
2. 1 TestNG 安装 & 环境配置
原创 2020-08-14 01:43:15 · 158 阅读 · 0 评论 -
1.13 Java之XML解析
package com.lujier.ReadXml;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.do...原创 2020-08-13 00:47:16 · 198 阅读 · 0 评论 -
1. 12 Java之Excel文件读写
package com.lujier.readExcel;import java.util.List;import java.io.FileInputStream;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellType;import org.apache.poi.ss.usermodel.Name;import org.apache.poi.ss.user...原创 2020-08-12 22:49:10 · 316 阅读 · 0 评论 -
1.11 Java之配置文件properties读写
执行上述代码之后,配置文件内容:上述代码执行后,结果如下:原创 2020-08-11 14:11:23 · 102 阅读 · 0 评论 -
1.10 Java之JSON常用方法
先定义一个类Students:package com.lujier.json;public class Students { // json序列化,必须有私有属性,空参构造,标准的get,set private String name; private int age; private int score; public Students(String name, int age, int score) { this.name = name; ...原创 2020-08-11 09:43:37 · 463 阅读 · 0 评论 -
1.9.2 Maven命令&目录介绍
- pom.xml 添加依赖包: <dependencyManagement> <dependencies> <!-- 阿里fastjson包JSON转换--> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <g.原创 2020-08-07 17:37:06 · 157 阅读 · 0 评论 -
1.9.1 Maven 安装配置&简单使用
作用: 项目构建工具,是目前大部分且在做项目时首选得项目构建, 管理工具(也有 一部分企业在用Ant,gradle) 在自动化课程中最大作用就是管理jar包 第三方jar(工具包) 特点: 1. 可以使用maven来编译你的代码; 2. 项目打包也可以使用maven来完成; 3. maven可以实现项目模块化管理; 4. maven可以在线管理依赖,项目依赖也很方便获取 5. maven提供了一些丰富的..原创 2020-08-06 13:10:16 · 151 阅读 · 0 评论 -
1.8 Java容器(ArrayList,HashSet HashMap)
package com.javadatabase.collections;import java.util.ArrayList;public class ArrayListDemo { public static void main(String[] args) { // 数组:定长,数组内容不能直接删除 // 容器:存储数据的对象 // ArrayList 是超级数组:ctrl + shift + o ArrayList l...原创 2020-08-06 10:09:57 · 161 阅读 · 0 评论 -
1.7 Java中8大基本数据类型对应的引用数据类型
原创 2020-08-06 10:02:30 · 264 阅读 · 0 评论 -
1.6 函数 & 面向对象
/* * TODO * @class: JavaObjectUsualMethod * @Author: Lujier @SINCE: 2020/7/19 11:38 * @Phone: 15934815829 @Email: 15934915829@163.com * @Content: 类定义,成员变量、普通函数,静态方法定义 & 方法重载 */package com.javadatabase;public class...原创 2020-08-06 09:59:47 · 165 阅读 · 0 评论 -
1.5 循环分支结构
/* * TODO * @class: JavaIfControl * @Author: Lujier @SINCE: 2020/7/19 10:41 * @Phone: 15934815829 @Email: 15934915829@163.com */package com.javadatabase;public class JavaIfSwitchControl { // 判断控制语句:if...else if ... else ...原创 2020-08-06 09:46:39 · 200 阅读 · 0 评论 -
1. 4 运算符基本分类
/* * TODO * @class: OperatorAll * @Author: Lujier @SINCE: 2020/7/17 17:30 * @Phone: 15934815829 @Email: 15934915829@163.com */package com.javadatabase;public class OperatorAll { // 运算符学习 public static void main(String...原创 2020-08-06 09:40:38 · 316 阅读 · 0 评论