07 2021 档案
摘要:在上一篇文章中说明了ADB命令的使用方式: 使用ADB命令的前提是保证手机或者模拟器和电脑是连接状态。 使用adb connect 127.0.0.1:+端口号命令,进行链接。 本篇文章详细说明一下常用ADB命令的操作。 1、启动和关闭ADB服务 在某些情况下,可能需要终止然后再启动服务端进程,例如
阅读全文
摘要:1、ADB命令简介 ADB全名Andorid Debug Bridge,是一个Debug调试工具,用这个工具可以直接操作管理Android模拟器或者真实的android设备。 开发安卓应用的程序员必须要掌握。 测试工程师在做安卓应用测试时,会使用到。 ADB是Android SDK里的一个是一个C/
阅读全文
摘要:当前市面上Android版本的模拟器还是挺多的,我们主要说明三款Android模拟器。 分别是:Android Virtual Devices、Genymotion、国内安卓模拟器。 Android Virtual Devices是Android SDK自带的模拟器,根据Android SDK不同平
阅读全文
摘要:1、Android操作系统简介 (1)Android系统诞生 2003年,Andy Rubin等人创建Android公司,并组建Android团队。 2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。安迪鲁宾成为Google公司工程部副总裁,继续负责And
阅读全文
摘要:1、JMeter的非GUI模式说明 之前,我们在启动JMeter时,一直会有一个黑色命令行窗口,窗口中提示了如下的信息: Jun 05, 2021 10:21:22 AM java.util.prefs.WindowsPreferences <init> WARNING: Could not ope
阅读全文
摘要:(一)POM模式介绍 1、什么是POM介绍 POM是Page Object Model页面对象模型的简称。 POM是为Web UI元素创建Object Repository的设计模式 。 在这个模型下,对于应用程序中的每个网页,应该有相应的页面类。 此Page类将会找到该Web页面的WebEleme
阅读全文
摘要:1、HTMLTestRunner介绍 HTMLTestRunner是一个基于unittest单元测试框架生成HTML报告的第三库。 2、HTMLTestRunner的使用 将下载好的HTMLTestRunner解压,把HTMLTestRunner.py放入Python安装目录的Lib文件下, 如:F
阅读全文
摘要:1、测试套件的作用 在我们实际工作,使用unittest框架会有两个问题: 我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序。 一个测试文件,我们直接执行该文件即可,但如果有多个测试文件,怎么实现多个测试文件一起执行行。 要解决上面两个问
阅读全文
摘要:1、什么是跳过测试 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例。或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例也就没必要去执行了,为了节省用例执行时间,可选择直接跳过测试。 2、常用的跳过测试方法和
阅读全文
摘要:1、断言介绍 在执行测试用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果和预期结果是否相等决定的,这时会用到断言方法。 本着没有消息就是最好的消息的原则,如果断言成功不采取任何措施(不输入任何日志),否则就会触发AssertionError(断言错误)的异常。 2、常用的断言方法 断
阅读全文
摘要:1、unittest基本简介 unittest是Python自带的一个单元测试框架,unittest又被称为PyUnit,是由Java的JUnit衍生而来,基本结构是类似的。对于单元测试,需要设置预先条件,对比预期结果和实际结果。 由于unittest是Python自带的标准模块,所以不需要单独再去
阅读全文
摘要:提示:下文中expected_conditions模块有时简称为EC模块。 1、EC模块介绍 expected_conditions是Selenium的一个模块,主要用于对页面元素的加载进行判断,包括元素是否存在,可点击等等。 expected_conditions模块的使用场景一般有两种: 直接在
阅读全文
摘要:1、函数嵌套调用 所谓函数嵌套调用指的是,一个函数里面又调用了另外一个函数。 (1)函数嵌套的示例: def testB(): print(' testB start ') print('这里是testB函数执行的代码...(省略)...') print(' testB end ') def tes
阅读全文
摘要:1、元素等待介绍 WebDriver定位页面元素时如果未找到,会在指定时间内一直等待的过程。为了保证脚本运行的稳定性,需要脚本中添加等待时间。 2、为什么要设置元素等待 在元素定位的时,可能出现脚本已经运行到定位某个元素的时候,但该元素尚未加载到页面,此时脚本会因无法定位到该元素而导致执行失败。换句
阅读全文
摘要:1、返回值概念 例如:我们去超市购物,比如买饮料,给钱之后,是不是售货员会返回给我们饮料这个商品。在函数中,如果需要返回结果给用户,就需要使用函数返回值。 换句话说,返回值就是函数执行以后返回的结果。 def buy(): # return返回结果给函数调用的地方 return '烟' # 使用变量
阅读全文
摘要:提示:上一篇文章介绍了Python中函数的基本使用,本篇文章主要说明一下Python函数实参的传递方式。 1、位置参数 位置参数:调用函数时根据函数定义的参数位置来传递参数。 def user_info(name, age, gender): print(f'您的名字是{name}, 年龄是{age
阅读全文
摘要:提示:聚合报告组件的使用和察看结果树组件的使用方式相同。本篇文章主要是详细的介绍一下聚合报告组件内容,不做示例演示。 1、聚合报告介绍 在使用JMeter进行性能测试时,聚合报告(Aggregate Report)可以说是必用的监听器。 (1)聚合报告的生成方式 聚合报告有2中生成方式: 在已有.j
阅读全文
摘要:在学习Linux系统之前,我们先来了解以下UNIX系统。 (一)UNIX系统介绍 在介绍Linux系统之前,我们先来了解以下UNIX系统。 1、UNIX系统发展历史 1965年,美国麻省理工学院(MIT)、通用电气公司(GE)及AT&T的贝尔实验室联合开发Multics工程计划,其目标是开发一种交互
阅读全文
摘要:Python函数的说明: Python中函数的应用非常广泛,前面章节中我们已经接触过多个函数,比如 input() 、print()、range()、len() 函数等等,这些都是 Python 的内置函数,可以直接使用。 除了可以直接使用的内置函数外,Python 还支持自定义函数,即将一段有规律
阅读全文
摘要:推导式comprehensions(又称解析式),是Python的一种独有特性。 推导式是可以从一个数据序列构建另一个新的数据序列(的一种结构体)。 Python中共有三种推导,在Python2和3中都有支持: 列表推导式 字典推导式 集合推导式 1、列表推导式 作用:用一个表达式创建一个有规律的列
阅读全文
摘要:1、浏览器的加载项配置 在很多情况下,我们在登录网站的时候,浏览器都会弹出一个是否保存登录账号的信息。如果我们选择保存,那么我们在下次登录时就不用再次输入账号,直接免登录了。 在我们实际的测试过程中,测试注册登录只是其中的一部分流程,然而我们用Selenium打开网站的时候,每次都需要重新登录,就非
阅读全文
摘要:1、验证码问题说明 对于Web应用来说,大部分的系统在用户登录时,都要求用户输入验证码。验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的。对于系统来说,使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性。但对于测试人员来说,不管是进行性能测
阅读全文
摘要:1、Cookie介绍 HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接,这就意味着服务器无法从连接上跟踪会话。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。举个例子:用户A购买了一件商品放入购
阅读全文
摘要:1、集合点介绍 “性能测试”一般思路是“多用户并发测试”,但真正的并发其实是不存在的,为了更真实、更接近的实现并发,在需要压力的地方设置集合点,等所有用户都到位的时候,然后一起访问,从而实现并发。 举个例子,要测试100个用户同时登录,每到输入用户名和密码登录的地方,所有的虚拟用户都相互等待,等10
阅读全文
摘要:1、Selenium实现文件上传 (1)页面中的文件上传说明 文件上传是Web页面上很常见的一个功能,用脚本去实现文件上传很简单。 一般场景:在页面中的上传按钮是一个<input>标签,其中type属性为type="file",这种可以用Selenium提供的send_keys()方法轻松解决。 (
阅读全文
摘要:1、操作浏览器自带弹窗 (1)说明: webdriver中处理JavaScript所生成的alert、confirm 以及prompt 弹窗是很简单的。具体思路是使用switch_to.alert()方法定位到alert/confirm/prompt弹窗。然后使用text/accept/dismis
阅读全文
摘要:Python序列的公共API指的就是,之前所学过的Python序列,如:列表、元组、字典等,基本上都支持的操作。 总结如下: 1、运算符 运算符 描述 支持的容器类型 + 合并 字符串、列表、元组 * 复制 字符串、列表、元组 in 元素是否存在 字符串、列表、元组、字典 not in 元素是否不存
阅读全文
摘要:1、Python集合特点 集合可以对自己的元素去掉重复数据。 集合元素的展示顺序和写入顺序不一致,所以集合元素是无序的,故集合也不支持下标。 集合是可变类型数据。 集合中只能存储不可变对象。 2、Python集合的创建 创建集合使用{}或set(), 但是如果要创建空集合只能使用set(),因为{}
阅读全文
摘要:1、为什么操作滚动条 在HTML页面中,由于前端技术框架的原因,页面中的一些元素为动态显示,元素根据滚动条的下拉而被加载。 例如:页面注册同意条款,需要滚动条到最底层,才能点击同意。 2、Selenium如何操作滚动条 Selenium的WebDriver类库中并没有直接提供对滚动条进行操作方法,但
阅读全文
摘要:1、字典的应用场景 思考1: 如果有多个数据,例如:'Tom', '男', 20,如何快速存储? 答:列表 list1 = ['Tom', '男', 20] 思考2:如何查找到数据'Tom'? 答:查找到下标为0的数据即可。 list1[0] 思考3:如果将来数据顺序发生变化,如下所示,还能用lis
阅读全文
摘要:元组是一个不可变的序列。 元组的操作的方式基本上和列表是一致的,所以你在操作元组时,就把元组当成是一个不可变的列表就OK了。 一般情况下,当我们希望数据不改变时,就使用元组,其余情况都使用列表。 1、元组的应用场景 思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做? 答:列表可以一次
阅读全文
摘要:上一篇文章介绍了列表操作的常用API,本篇文章再说明一些列表(List)其他一些很常用的操作。 1、通过切片对列表的操作 注意:在给切片进行赋值时,只能使用序列赋值。 (1)通过切片对列表进行修改 """ 1、使用一个序列替换,一个列表的片段。 注意:不过替换序列的当度是多少, 都完全替换列表中的指
阅读全文
摘要:1、Dubbo介绍 (1)Dubbo说明 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 简单的说:Dubbo一个高性能的,基于 Java 的,开源 RPC 框架。所以严格来说,Dubbo不是协议,而是一种分布式服务框架。 (2)Dubbo
阅读全文
摘要:1、列表的概念 (1)列表的定义 列表是Python中一种基本的数据结构。列表存储的数据,我们称为元素。在列表中的每个元素都会有一个下标来与之对应,第一个索引是0,第二个索引是1,依此类推的整数。 列表里可以同时储存不同的数据类型,列表里也可以嵌套列表(列表本身也是一种数据类型)。 对列表的操作包括
阅读全文
摘要:1、什么是iframe表单 实际上就是HTML页面中使用iframe/frame标签,是在当前页面中引用了其他页面的链接,真正的页面数据并没有出现在当前页面源码中,但是在浏览器中我们是可以看到内容的。简单理解可以使页面中开了一个窗口显示另一个页面。 我们在Web应用中,经常会遇到这样的iframe表
阅读全文
摘要:1、多标签/多窗口之间的切换 (1)多标签/多窗口场景: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作,如果继续操作原来的页面会报错的。这时候就就时多标签或窗口的情况,即识别切换句柄。 (2)操作方法: switch_to.window()方法:切换窗口。
阅读全文
摘要:1、页面中的单选按钮和多选按钮 页面中的单选按钮和多选按钮样式,如下图所示: 页面代码片段: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> </head> <body> <fieldset> <legend>单选按
阅读全文
摘要:因为我之前对WebService接口也不是很了解,所以本篇文章先简单的概括的说明一下WebService的相关概念。在文章的后半部分,进行测试WebService接口的步骤说明。 1、什么是WebService (1)先说说什么是服务 想要理解WebService,必须先理解什么是Service(服
阅读全文
摘要:页面中的<select></select>标签,就代表该元素是一个下拉菜单。 1、使用Selenium中的Select类来处理下拉菜单(推荐) 可以使用Select类中提供的方法来操作页面中的下拉菜单。 (1)操作步骤: # 1.导入包Select类 from selenium.webdriver.
阅读全文
摘要:(一)对鼠标的操作 1、鼠标事件介绍 前面例子中我们已经学习到可以用click()来模拟鼠标的单击操作,而我们在实际的Web产品测试中发现,有关鼠标的操作,不单单只有单击,有时候还要用到右击,双击,拖动等操作,这些操作包含在ActionChains类中。 2、ActionChains 类鼠标操作的常
阅读全文
摘要:上一篇文章说了Python字符串下标和切片的概念,这篇文章来说说Python中对字符串的常用操作。 对字符串的操作主要分为三大类:查找、修改和判断。 1、字符串的查找 所谓字符串查找方法,即是查找一个子串在字符串中的位置或出现的次数。 @1、find()方法 find()方法是,检测某个子串是否包含
阅读全文
摘要:1、序列的概念 序列sequence是Python中最基本的数据结构。指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。 为了更形象的认识序列,可以将它看做是一家旅店,那么店中的每个房间就如同序列存储数据的一个个内存空间,每个房间所特有的房间
阅读全文
摘要:提示:上一篇文章中详细的说明了while循环语句,本篇文章来说说Python中的for循环语句。 1、for循环语法 # 注:临时变量是程序员自定义的临时变量。 for 临时变量 in 序列: 重复执行的代码1 重复执行的代码2 ...... for循环的代码块会执行多次,序列中有几个元素就会执行几
阅读全文
摘要:为了方便我们控制程序的运行流程,编程语言一般都会有基本的流程控制结构,包括:顺序结构、选择结构、循环结构。 本篇文章主要说明Pyhton循环结构的while循环语句。 1、什么是循环结构 (1)概念 循环结构是指在实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。为解决此类常
阅读全文
摘要:1、流程控制基本概念 默认情况下,程序的运行流程是这样的:运行程序后,系统会按编写好的代码,从上至下顺序执行程序中的每一行代码。但是这样并不能满足我们所有的开发需求,实际开发中,我们需要根据不同的条件可以改变程序的执行顺序,也可以让指定的程序反复执行多次,最终来实现我们要完成的功能。 为了方便我们控
阅读全文