- 博客(67)
- 收藏
- 关注
原创 【App自动化测试】(十八)多设备管理平台——openSTF
STF的核心就是远程,它比本地多出很多优势,它可以构建一个测试平台的,这个平台可以连接多个设备,这些设备可以把放在同一个局域网内的远程调试。当我们把局域网的一些必要端口(比如说机器远程调试端口5555,openSTF网页端7100等)暴露到公网上,我们就可以实现一个跨地点的设备调试,这样就不用带着多个设备到处跑了。可以通过手机设置(WIFI)中查看ip地址,再查看本机ip地址,如果两个地址网段相同,可以确认二者属于同一网段,此时手机的IP地址可用。:真机的USB数据拔掉后,需要重新在连接一下远程IP。
2023-05-26 16:26:21
1944
原创 【App自动化测试】(十七)遍历测试工具——Android Maxim
Android Maxim是基于遍历规则的高性能Android Monkey,适用于真机/模拟器的APP UI压力测试。Android Maxim有自己的遍历规则,可以使用几个变量规则去优化Monkey 的操作。Android Maxim的性能高,而且还支持Monkey的相关命令。
2023-05-26 16:15:58
1998
1
原创 【App自动化测试】(十六)健壮性测试工具——Android Monkey
Monkey是一个在模拟器或设备上运行的程序,用于生成用户事件的伪随机流。:当手工测试过程中,一个页面存在非常多的元素,比如雪球APP可能一个面中有10万支股,每支股中又包含非常多的小数据,如果我们正向的自动化测试的话,编写自动化测试用例就会耗时很久,如果我们使用手工测试的话工作量也会非常庞大。使用Monkey的话可以在不用编程或者编写很少的代码和参数的情况下,完成随机点的效果,从而节省人力和物力。,编码少,甚至不要编码Monkey缺点:随机发生,不收控制。
2023-05-26 16:14:04
1616
1
原创 【App自动化测试】(十五)手机浏览器(webview)自动化测试
远程调试的时候,出现解析混乱,dom无法正常加载的情况。不知道是不是因为webview版本较低导致的。MUMU模拟器则正常。chromedriverExecutableDir的示例图:可使用不同名字的后缀进行chromedriver的版本区分。练习的时候使用了三款模拟器:Avd Android6.0、Avd Android7.0、MUMU.,写明浏览器的包名和activity的名字。但是使用browserName是最简单的。Avd Android6.0、Avd Android7.0在使用。
2022-11-28 10:49:11
1687
原创 【App自动化测试】(十四)Android WebView测试方法
uiautomator 框架把 webview 组件“翻译”成了原生组件uiautomatorviewer、appium desktop、weditor 等都可以分析uiautomatorviewer 对java 版本有要求,需要 1**.8.0 60以下的版本**uiautomatorviewer 首次分析 webview 组件时需多刷新一次控件转换html 控件尽量用原生控件表达,比如文本转 TextView,图片转 lmage。
2022-11-28 10:29:25
2851
原创 【App自动化测试】(十二)App异常弹框处理
app异常弹框是正常现象,比如系统弹框,使用过程中出现电话和信息。弹框出现的位置和时机是非常不确定的,可能会出现在开始使用app时,也可能出现在app使用结束时。因此处理异常弹框的功能最好封装在框架层,可以在每次查找元素的时候来进行判断是否有弹框存在。
2022-11-25 22:50:19
1107
原创 【App自动化测试】(十一)自动化关键数据记录
在我们进行自动化测试的时候,为了能够了解测试脚本运行情况,我们会对一些关键数据进行记录,如果后续运行出现问题通过这些记录会 更加方便定位。主要记录关键数据的是数段有:添加行为日志、添加截图等等。
2022-11-25 22:46:21
585
原创 【App自动化测试】(十)特殊控件Toast识别
appium使用uiautomator底层的机制来分析抓取toast,并且把toast放到控件树里面,但是它本身并不属于空间。必须使用xpath来查找:测试程序:APIDemos测试内容:直接进入View下面的Pop menu 界面,然后点击操作按钮产生toast,并进行断言。步骤:运行命令:PageSource内容:通过PageSource可以知道,此处Toast的class属性为"android.widget.Toast",它的text属性为"Clicked popup menu item S
2022-11-25 22:14:14
1103
原创 【App自动化测试】(九)移动端复杂测试环境模拟——来电、短信、网络切换
当我们使用模拟器来进行测试的时候,Appium为我们提供一些**Android AVD 模拟器专用**的API(类似MUMU等第三方模拟器无法使用),来帮助我们模拟复杂的测试环境,例如,模拟来电,模拟来短信,模拟网络切换等等,下面就也得大家介绍一下常用的API。
2022-11-25 22:06:27
1082
原创 【App自动化测试】(八)三种等待方式——强制等待、隐式等待、显示等待
隐式等待:尽量默认都加上,时间限定在3-6s,不要太长,为了所有的find_element方法都有一个很好的缓冲。显示等待:用来处理隐式等待无法解决的一些问题,比如:文件上传。文件上传需要设置20s以上,但是如果设置显示等待,它会在每个find方法都等待这么长时间,一旦发现没找到元素,就会等20s后才抛出异常,影响case的执行效率,这时就需要用显示等待,显示等待可以设置的长一点。强制等待:一般不推荐,前面两种基本能解决大部分问题,如果某个空间灭有任何特征,只能强制等待,这种抢矿比较少。
2022-11-25 11:29:17
4185
3
原创 【App自动化测试】(七)移动端自动化中常见控件交互方法
Appium自动化测试常用的控件交互方法。1. 点击方法: `element.click()`2. 输入操作: `element.send_keys('appium')`3. 设置元素的值: `element.set_value('appium')`4. 清除操作: `element.clear()`5. 是否可见: `element.is_displayed()` 6. 是否可用: `element.is_enabled()` .......
2022-11-24 16:52:37
641
原创 【App自动化测试】(六)移动端自动化中常用的元素定位方式
Android/iOS基础控件部署知识。移动端自动化测试常用元素定位方式,控件定位,uiautomator定位,xpath定位,css selector定位。
2022-11-24 16:47:15
1548
原创 【App自动化测试】(五)移动端自动化常用的元素定位工具——Uiautomatorviewer、 ATX WEditor、Appium Inspector
移动端自动化测试中常使用的三种元素定位工具:UiautomatorViewer、ATX WEditor、Appium Inspector。介绍三种工具的功能已经使用方法。
2022-11-24 13:30:46
2487
原创 【App自动化测试】(四)Capability配置参数说明
Capability 主要用于配置 Appium会话,告诉 Appium 服务器需要自动化的平台的应用程序。Capability在使用编写测试脚本时会向Appium服务器端发送指令,让Appium服务器端知道被测设备的信息,Capability也可在去设置Appium运行过程中的参数,通过设置参数可以提高运行的速度,或者是满足特殊场景。
2022-11-23 16:17:56
965
原创 【App自动化测试】(一)Appium和移动端自动化
Appium是一个移动端的自动化测试框架,可用于测试原生应用,移动网页应用和混合应用,且是跨平台的。可用于iOS和Android操作系统。原生应用是指用android或iOS编写的应用。移动网页应用是指网页应用,类似于ios中safari应用或 者Chrome应用或者类似浏览器的应用。混合应用是指一种包裹webview的应用,原生应用网页内容交互性的应用。重要的是Appium是跨平台的。何为跨平台,意思是可以针对不同平台用一套api来编写脚本。
2022-11-23 13:50:33
782
原创 【python】(二十) python装饰器
闭包函数:函数里面套函数这种形式的函数,一般就是闭包函数。函数体开始执行与结束执行的时候分别添加打印信息。实现一个计时器的装饰器,计算函数的执行时间。
2022-09-21 14:57:08
608
原创 【python】(十九)python常用第三方库——urllib3
Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3。线程安全连接池管理客户端 SSL/TLS 验证支持 HTTP 和 SOCKS 代理……
2022-09-21 14:44:03
3832
原创 【python】(十八)python常用第三方库——pymysql
Python 的数据库接口标准是 Python DB-APIPyMySQL 是从 Python 连接到 MySQL 数据库服务器的接口PyMySQL 的目标是成为 MySQLdb 的替代品。
2022-09-21 14:40:22
1773
1
原创 【python】(十七)python常用第三方库——yaml
一种数据序列化格式用于人类的可读性和与脚本语言的交互一种被认为可以超越 XML、JSON 的配置文件。
2022-09-21 14:31:47
425
原创 【python】(十六)python内置库——logging
根据定义的级别,打印当前级别及以上级别的日志,比如:定义的是warning的话,则会打印warning及其以上级别的日志,即warning、error、critical级别。如果设置再后面,只对basicConfig之后的代码生效,之前的无效。默认形式为 ‘2003-07-08 16:49:45,896’ (逗号之后的数字为时间的毫秒部分)。注意:Windows系统下,conf文件中不能包含中文字符,否者会报错。参数来确定日志文件的名称和日志保存的位置。:将日志输出到文件中和终端中。参数来确定日期的格式。
2022-09-14 16:42:09
673
1
原创 【python】(十五)python内置库——正则表达式re
根据正则表达式分割字符串,返回列表。在整个字符串中搜索第一个匹配的值。从字符串的开始处进行匹配。
2022-09-14 16:14:39
707
原创 【python】(十三)python内置库——time、datetime
基于time包的一个高级包,对time进行可一层封装,可以直接调用生成我们想要的一个时间格式、日期格式。datetime提供的接口更直观、更有用,功能也更强大。(datetime是比较常用的模块,所以章主要讲解datetime模块的使用。:time模块是通过调用C语言的库来实现的,所以它更加偏底层一点。time提供的一些方法对于某些平台可能无法进行调用。注:后两个比较少用,所以主要说明datetime类的用法。:日历使用的模快,对于测开来说使用较少。):计算两个时间的时间差。
2022-09-14 15:54:12
351
原创 【python】(十二)python内置库——文件处理
使用with方法,会自动完成文件关闭操作。通过python封装的API,可以实现文件的读、写、追加操作文件打开要使用utf-8的编码格式(以免中文出现乱码)
2022-09-14 15:39:56
650
原创 【python】(十一)python内置库——OS和sys
os: Operating System的缩写os 模块是python系统编程的操作模块,提供了非常丰富的功能去处理文件和目录。跨平台的差异:不同操作系统,os的个别方法的使用会略有区别。sys模块是 Python 自带的内置模块是也是魔筷是与Python 解释器交互的桥梁。它提供了访问解释器使用或者维护的变量,以及与解释器进行交互的函数。那通俗来讲,sys模块负责程序与Python解释器的交互,提供了一系列的函数和变量,用户操控Python运行时的环境。
2022-09-14 15:31:40
2205
原创 【python】(十)python的错误与异常
语法错误:编写代码是语法出现的问题,导致的错误逻辑错误:代码层级逻辑错误系统错误:系统层级的错误,如内存泄漏程序执行过程中出现的未知错误;语法和逻辑都是正常的;程序业务逻辑不完善引起的程序漏洞(Bug)。#继承Exception class MyError(Exception) : def __init__(self , value) : self . value = value def __str__(self) : return repr(self . value)
2022-09-14 15:21:56
245
原创 【python】(八)python类型注解
官方说明:https://docs.python.org/zh-cn/3/library/typing.html2. 类型提示的好处增强代码可读性ide中代码提示静态代码检查3. 类型别名4. 自定义类型IDE关联实例的可选属性:使用mypy可以检查python中语法和类型等错误。5.2用法在终端中使用mypy命令去运行程序文件。如果存在错误,会报错。
2022-09-13 16:15:20
1253
原创 【python】(七)python内置装饰器: @classmethod和@staticmethod
名称定义调用关键字使用场景普通方法至少需要一个参数self实例名.方法名()无方法内部涉及到实例对象属性的操作类方法至少需要一个cls参数类名.方法名()或者实例名.方法名()如果需要对类属性,即静态变量进行限制性操作静态方法无默认参数类名.方法名()或者实例名.方法名()无需类或实例参与。
2022-09-13 15:43:11
741
原创 【python】(六)python的封装、继承和多态
class关键字# 语法 class 类名(父类名) : """类的帮助信息""" 属性方法# class_def.py # 类的声明 class Human(object) : #object可以省略。在python中如果没有声明继承的类的话,那默认继承的是超类object。"""人类""" # 定义属性(类属性) message = "这是类属性" # 通过类访问类属性 print(Human . message)
2022-09-13 15:37:45
915
1
原创 【python】(五)python函数和python匿名函数lambda
def:函数定义关键词:函数名称():参数列表放置的位置,可以为空:可选,指定向函数中传递的参数comments:可选,为函数指定注释:可选,指定函数体缩进:python 是通过严格的缩进来判断代码块儿函数体和注释相对于 def 关键字必须保持一定的缩进,一般都是 4 个空格ctrl+alt+L定义空函数使用pass语句占位写函数注释 comments、
2022-09-07 16:19:23
407
原创 【python】(四)python常用数据结构
列表是有序的可变元素的集合,使用中括号[]包围,元素之间用逗号分隔列表是动态的,可以随时扩展和收缩列表是异构的,可以同时存放不同类型的对象列表中允许出现重复元素元组是有序的不可变对象集合因为元祖不可变,通常我们把元祖当做常量列表元组使用小括号包围,各个对象之间使用逗号分隔元组是异构的,可以包含多种数据类型无序的唯一对象集合用大括号{}包围,对象相互之间使用逗号分隔集合是动态的,可以随时添加或删除元素集合是异构的,可以包含不同类型的数据字典是无序的键值对集合字典用大括号{}
2022-09-06 14:07:18
950
原创 【python】(三)python控制流
一条一条语句顺序执行叫做顺序结构分支结构就是在某个判断条件后,选择一条分支去执行循环语句允许我们执行一个语句或语句组多次python提供了for循环和while循环右图是大多数编程语言中循环语句的一般形式。
2022-09-02 10:35:42
245
原创 【python】(一)字符串基本操作
单行字符串使用" "来进行定义。多行字符串使用""" """来进行定义.# 单行 str_a = "this is a str" # 多行 str_b = """这是一段字符串霍格沃兹测试开发"""
2022-09-01 16:37:24
274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人