自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

旅行没有终点的博客

旅行没有终点

  • 博客(79)
  • 收藏
  • 关注

原创 [-003-]-Python3+Unittest+Selenium Web UI自动化测试之显示等待WebDriverWait

2.2 element_located_selection_state_to_be(locator,state):判断一个元素的状态是否是给定的选择状态。2.12 text_to_be_present_in_element():判断文本内容test是否出现在某个元素中,判断的是元素的text。2.7 frame_to_be_available_and_switch_to_it(parm):判断frame是否可用。2.5 element_to_be_selected():期望某个元素处于选中状态。

2023-07-05 11:26:16 247

原创 [-002-]-Python3+Unittest+Selenium Web UI自动化测试之定位元素(包括父子,兄弟)及常见操作

2.3 通过placeholder属性获取到的xpath。2.4 通过id属性所在元素的下一个元素获取的xpath。3、xpath高级的定位写法(父子、兄弟节点定位)2.2 通过id的方式获取到的xpath。2.9 根据href定位元素xpath。2.7 根据关键词定位xpath。输入内容,send_keys()2.6 根据文本定位xpath。2.1 普通的xpath定位。3.1 根据兄节点定位弟节点。3.2 根据父节点定位子节点。3.3 根据子节点定位父节点。3.4 根据弟节点定位兄节点。

2023-07-05 10:57:32 411

原创 [-001-]-Python3+Unittest+Selenium Web UI自动化测试之环境准备

找driver驱动:https://registry.npmmirror.com/binary.html?3.1、google的安装目录下:C:\Program Files (x86)\Google\Chrome\Application。首先查看你的google浏览器的版本,比如我的:114.0.5735.199。3.2、Python安装目录:C:\csjin\soft\python。1、Python环境,网上很多教程,查询配置即可。2、选用的浏览器及driver驱动。寻找最接近浏览器版本即可。

2023-06-28 10:31:02 249

原创 [-003-]-Python3+Unittest+Uiautomation Windows桌面App UI自动化之控件查找

传入的函数参数要求:function(control: Control, depth: int) -> bool。

2023-06-15 15:46:52 718

原创 [-002-]-Python3+Unittest+Uiautomation Windows桌面App UI自动化之鼠标操作

moveSpeed:1 正常速度,< 1 移动速度较慢,> 1 移动速度更快。moveSpeed:1 正常速度,< 1 移动速度较慢,> 1 移动速度更快。moveSpeed:1 正常速度,< 1 移动速度较慢,> 1 移动速度更快。模拟鼠标左键从点 x1、y1 拖放到点 x2、y2。模拟鼠标右键从点 x1、y1 拖放到点 x2、y2。waitTime: 等待时间,默认为0.5。模拟鼠标从当前光标移动到点 x, y。模拟鼠标在点 x, y 的点击。模拟鼠标在点 x, y 的点击。即等待时间默认为0.5秒。

2023-06-15 11:50:44 309

原创 [-001-]-Python3+Unittest+Uiautomation Windows桌面App UI自动化之获取

获取inspect中。

2023-06-14 17:44:47 152

原创 Pyhton3+AirTest+[007]+小程序UI自动化之报错:uid 2000 does not have android.permission.WRITE_SECURE_SETTINGS解决方

小米:在开发者选项里,把“USB调试(安全设置)"打开即可。允许USB调试修改权限或模拟点击。oppo:在开发者选项里,把"禁止权限监控"打开即可。

2023-06-14 17:33:25 447 1

原创 Pyhton3+AirTest+[006]+小程序UI自动化之模拟按键

方法示例:keyevent("KEYCODE_BACK")使用方法:keyevent(keyname)

2023-06-14 17:30:40 232

原创 Pyhton3+AirTest+[005]+小程序UI自动化之运行时log太多怎么办

airtest我们在运行时候,log日志中打印了大量的debug日志,大多是无用的。运行时仅会打印启动时的日志。

2023-06-14 17:28:52 161

原创 Pyhton3+AirTest+[004]+小程序UI自动化之常用的高级方法

[商家小程序]-UI自动化-[004]-常用的高级方法 元素定位 建议尽量使用 text 定位元素 # 定位一个元素 poco(text='选择门店') # 如果text匹配多个元素,获取多个元素 ele_list=list(poco(text='选择门店').wait(5)) # 模糊定位,支持正则 poco(textMatches="'^门店.*$'") 如果不能使用text定位,常用局部定位 # 子元素 poco(name=

2021-08-02 16:10:41 587

原创 Pyhton3+AirTest+[003]+小程序UI自动化之常用方法介绍

一、airtest介绍官网:https://airtest.doc.io.netease.com/ Airtest API文档:https://airtest.readthedocs.io/en/latest/二、poco介绍Poco是一款基于UI控件搜索的自动化框架,与基于图像识别的Airtest不同的是,Poco可以使用类似 poco(“OK”).click() 的方式来获取并操作节点 导入poco from poco.drivers.android.uiautomat..

2021-08-02 16:08:29 236

原创 Pyhton3+AirTest+[002]+小程序UI自动化之Unittest+AirTest融合框架介绍

一、目的使用unittest的目的是为了批量执行测试用例二、框架目录common:放一些公共类,例如:HTMLTestRunner等conf:放一些数据库,固定的设置和元素定位路径等data:放一些测试数据lib:同commonloctor:读取conf/setting下的内容封装page:拿到loctor中的内容page_element:封装一些页面元素的定位等操作log:日志report:测试html报告testCase:测试用例目录u...

2021-08-02 16:06:34 420

原创 Pyhton3+AirTest+[001]+小程序UI自动化之环境搭建

一、Airtest 框架简介Airtest Project是网易开发的一个开源自动化测试框架。与其他自动化测试框架相比,Airtest项目具有以下两个优点:大大降低了编写和维护自动化脚本的成本Airtest 希望以所见即所得的方式完成脚本的录制。即使测试人员不知道脚本,他们也可以通过正常的单击和拖动操作自动记录脚本,这可以大大降低企业和项目的自动维护成本。解决游戏测试的痛点Airtest Project希望通过支持不同的游戏引擎,成为一个真正的跨引擎和跨平台的自动化测试平台。底部的主要..

2021-08-02 16:02:03 295

原创 十六、appium启动app时,都会重新手动安装uiautomator2.server 和 uiautomator2.server.test

问题:appium启动app时,都会重新手动安装uiautomator2.server 和 uiautomator2.server.test解决方法:下载最新的appium安装包即可。地址为:https://github.com/appium/appium-desktop/releases/

2020-11-17 09:30:11 965

原创 Python3-接口自动化-7-读取Excel封装方法

需要调用第三方库xlrd#调用读Excel的第三方库xlrdfrom xlrd import open_workbook2.获取Excel的文件路径from config import getpathInfo#调用读Excel的第三方库xlrdfrom xlrd import open_workbook拿到该项目所在的绝对路径path = getpathInfo.get_Path()获取用例文件路径xlsPath = os.path.join(path, “testFile”, fi.

2020-10-17 10:42:34 551

原创 Python3-接口自动化-6-unittest模块的各个属性说明

一、unittest属性如下[‘BaseTestSuite’, ‘FunctionTestCase’, ‘SkipTest’, ‘TestCase’, ‘TestLoader’, ‘TestProgram’, ‘TestResult’, ‘TestSuite’, ‘TextTestResult’,‘TextTestRunner’, ‘_TextTestResult’, ‘all’, ‘builtins’, ‘doc’, ‘file’, ‘name’, ‘package’, ‘path’, ‘__unit

2020-10-17 10:41:52 259

原创 Python3-接口自动化-5-JSON和字典的区别

json:是一种数据格式,是纯字符串。可以被解析成Python的dict或者其他形式。dict:是一个完整的数据结构,是对Hash Table这一数据结构的一种实现,是一套从存储到提取都封装好了的方案。它使用内置的哈希函数来规划key对应value的存储位置,从而获得的数据读取速度。一、json和dict区别:1、json的key只能是字符串,python的dict可以是任何可hash对象(hashtable type);2、json的key可以是有序、重复的;dict的key不可以重复。3、js

2020-10-17 10:41:02 288

原创 Python3-接口自动化-4-GET和POST请求

一、GET请求代码如下class RunMain():def send_get(self, url, data): result = requests.get(url=url, params=data) res = result.text return resdef run_main(self, url=None, data=None , method='POST'): result = None if method == 'post':

2020-10-17 10:39:46 303

原创 Python3-接口自动化-3-接口自动化项目目录框架

一、项目结构1. 新建一个工程,工程名为:sales_interface_auto2. 在工程的根目录新建一个py脚本:runAll.py 执行接口自动化的入口,项目工程部署完毕后直接运行该文件即可3. 在项目下创建几个package包:----common:这个包放置一些公共的方法,例如:读取excel,读取mysql,get和post请求的封装,发送Email的封装,读取手机公共参数的封装,Log.py是封装日志的输入----config:这个包里是放置一些获取根文件夹目录,接...

2020-10-17 10:36:13 1320

原创 Python3-接口自动化-2-生成中文参数写入文件涉及的编码问题

一、问题描述中文字符写入文件时,存储为乱码二、代码如何实现def write_potentiall_user_info(self,id_no ,c_name ,c_mobile ): config.set("PersonalInformation","id_no",str(id_no)) config.set("PersonalInformation","c_name",c_name) config.set("PersonalInformation","c_mobile",

2020-10-17 10:33:45 372

原创 Python3-接口自动化-1-基础介绍

一、请求包括哪些内容:1.请求地址2.请求方法3.请求参数4.请求响应二、HTTP请求包含三个部分1.请求行:请求地址,请求方法:常见的有get和post2.消息头:content-type content-length3.请求正文:请求参数三、GET和POST请求的特点1.GET请求:请求参数放在地址上面,已?打头,参数是键值对存在,多个参数以&衔接请求无正文浏览器里有长度限制。不同浏览器对长度限制不同,一般限制1024的长度,所有请求参数也有限制2.POST请求:请

2020-10-17 10:30:48 148

原创 十五、键盘操作press_keycode()方法

调用格式:self.driver.press_keycode('66')方法:1.电话按键电话键KEYCODE_CALL 拨号键 5KEYCODE_ENDCALL 挂机键 6KEYCODE_HOME 按键Home 3KEYCODE_MENU 菜单键 82KEYCODE_BACK 返回键 4KEYCODE_SEARCH 搜索键 84KEYCODE_CAMERA 拍照键 27KEYCODE_FOCUS 拍照对焦键 80KEYCODE_POWER 电源键 2

2020-10-11 21:04:30 3222 3

原创 十四、报错:configparser.InterpolationSyntaxError: ‘%‘ must be followed by ‘%‘ or ‘(‘, found: “%)‘] 的解决

报错内容:Failed to import test module: app.BusinessProcess.testLendRequestProcess.testPrivateOwner.test_001_lend_request_private_owner_moduleTraceback (most recent call last):File "C:\Python36\lib\unittest\loader.py", line 428, in _find_test_pathmodule.

2020-10-11 21:03:40 1610

原创 十三、Python+appium获取Toast内容

需要获取到toast弹框内容改toast弹框的属性有class等1.可通过class属性,使用xpath定位text = self.find_element_xpath('//*[@class="android.widget.Toast"]').text2.若上面的定位不到,可加一属性text = self.find_element_by_xpath('//*[@class="android.widget.Toast" and @index ="1"]').text...

2020-10-11 21:03:05 955 7

原创 十二、解决【夜神模拟器和手机】同时连接电脑出现 :adb server version(31) doesn‘t match this client(41)和adb devices 无法识别

1. 启动夜神模拟器后cmd - adb devices:出现:adb server version(31) doesn't match this client(41)cmd - adb version :出现:adb devices 无法识别,什么都不显示2.分析本机sdk的adb路径:cmd -- where adbsdk adb 版本号:Version 29.0.5-5949299进入夜神模拟器中bin:版本号为:Android Deb...

2020-10-11 21:02:28 502

原创 十一、UI自动化框架介绍

C:\chushujin\study\sales_ui_auto>tree├─.idea│ └─inspectionProfiles├─app_package --APP的apk包├─comm --封装一些访问数据库,日志输出,读取配置文件,HTMLTestRunner报告,获取设备信息方法封装├─config --封装一些获取项目路径方法,读取excel等│├─locator --封装读取配置中元素的路径│ └─app│ ├─appCommon│ │ ├─testLoginOu.

2020-10-11 21:01:52 583

原创 十、单选框定位选择

看图具体分析:1.配偶,是,否分别为兄弟关系2.所以可以通过配偶(大哥)定位二哥和弟弟3.二哥为://android.view.View[@text='配偶']/following-sibling::android.view.View[1]/android.view.View/android.widget.RadioButton 弟弟为://android.view.View[@text='配偶']/following-sibling::android.view.V...

2020-10-11 21:01:10 641 1

原创 九、页面滑动具体判断滑动幅度

使用方法看之前文章:四、Appium-python-UI自动化之页面-上下滑动、左右滑动swipe方法操作下面介绍具体的滑动幅度例子:想选择 天津,就需要将天津向上滑动一个幅度,具体做法如下:1. 选中调试窗口2. 将鼠标移至 天津市 三个字上获取起始移动点坐标(181,1998)3. 将鼠标移至 北京市 三个字上获取终点坐标(181,1888)4. 获取手机屏幕的长和宽(x,y)=(1080,20...

2020-10-11 21:00:31 349

原创 八、appium通过text定位

1.通过xpath定位textxpath路径为://android.widget.EditText[@text='请输入包含街道的完整地址']2.通过AndroidUIAutomator# 这个在运行时,调用的是Android自带的UI框架UiAutomator的Api# 介绍几个简单常用的,text、className、resource-id# text# 匹配全部text文字driver.find_element_by_android_uiautomator...

2020-10-11 20:59:39 5156 1

原创 七、Xpath定位元素(/child:: ,/parent::,/preceding-sibling::,/following::)

记录一下selenium,appium中xpath根据父子、兄弟、相邻节点定位的方法:一、定位方式简介:1.Xpath轴所有的定位方式:2.常用的定位方式汇总:/child:: (由父节点定位子节点),/parent::(由子节点定位父节点),/preceding-sibling::(由弟弟节点定位哥哥节点),/following::(由哥哥节点定位弟弟节点)二、定位方式详细实例介绍:1.由父节点定位子节点/child:: (由父节点定位子节点)<html&g...

2020-10-11 20:57:23 12280 2

原创 六、Appium-python-UI自动化之记一次使用隐式等待:implicitly_wait()的坑(消耗等待时间太久)

情景描述:  APP首次登录时通常会有位置授权操作,APP-UI自动化时需要检测该授权弹框是否存在,如果存在则需要授权,如果不存在则进行下一步逻辑代码如下: MyLog.logger().info("检查位置授权弹框之前时间为:" + str(datetime.datetime.now())) # 检查位置授权是否弹出 ...

2020-02-17 19:05:45 1235

原创 五、Appium-python-UI自动化之强制等待:sleep,隐式等待:implicitly_wait,显示等待:WebDriverWait()

一、强制等待sleep()'''设置固定休眠时间,单位为秒。 由python的time包提供, 导入 time 包后就可以使用。缺点:不智能,使用太多的sleep会影响脚本运行速度。'''import timesleep(10) #等待10秒二、隐式等待:implicitly_wait()'''由webdriver提供的方法,一旦设置,这个隐式等待会在WebD...

2020-02-16 16:25:56 2714 1

原创 四、Appium-python-UI自动化之Xpath定位元素

记录一下selenium,appium中xpath根据父子、兄弟、相邻节点定位的方法:一、定位方式简介:1.Xpath轴所有的定位方式:2.常用的定位方式汇总:/child:: (由父节点定位子节点),/parent::(由子节点定位父节点),/preceding-sibling::(由弟弟节点定位哥哥节点),/following::(由哥哥节点定位弟弟节点)二、定位...

2020-02-08 20:11:42 1201

原创 三、Appium-python-UI自动化之自动获取devicesd,version,package,appActivity

from appium import webdriver# 使用正则表达式筛选设备 idimport re# 使用time.sleep(xx)函数进行等待import time# 使用 os 模块调用命令import osdef get_sales_package(): # 测试的销售APP包的路径和包名 sales_appLocation = os.pa...

2020-02-08 20:10:46 382

原创 二、Appium-python-UI自动化之页面-上下滑动、左右滑动swipe方法操作

1.首先看app中怎么划分横纵坐标2.swipe函数def swipe(self, start_x, start_y, end_x, end_y, duration=None): """Swipe from one point to another point, for an optional duration. Args: ...

2020-01-25 09:01:17 2150

原创 一、Appium-python-UI自动化之元素定位-获取APP中的toast,判断该元素是否存在

获取如图的toast提示直接上代码:from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC def is_toast_exist(driver,text=None,timeo...

2020-01-25 09:00:21 882

原创 十、封装assertResponse响应断言

一、assertNotNull介绍assertNotNull(responseEntity.getBody());可判断报文是否为空responseEntity为响应实体对象二、assertEquals介绍assertEquals(0, json.getInteger(“code”).intValue());可判断两个值是否相等json为响应body的实体对象三、assertTrue介...

2019-08-23 20:36:24 827

原创 九、封装登录POST请求、登录后POST请求以及GET请求

一、封装登录后POST请求以及GET请求/*** 全局运行时环境参数管理器*/public static Map<String, String> BASE_GLOBAL_MAP;/*** 全局测试结果数据收集器*/public static JSONArray BASE_URI_COLLECTOR;/*** 全局请求处理器*/public static UcRE...

2019-08-23 20:35:10 286

原创 八、MD5加密并封装,并调用封装方法

一、MD5加密封装Md5public class Md5 {//十六进制下数字到字符的映射数组private static final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };/**把inputString加...

2019-08-23 20:32:47 349

原创 七、创建UcRESTTemplate请求管理器

一、创建UcRESTTemplate管理器封装import com.alibaba.fastjson.JSON;import org.apache.http.client.config.RequestConfig;import org.apache.http.conn.ssl.NoopHostnameVerifier;import org.apache.http.impl.client.C...

2019-08-23 20:31:43 151

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除