Python3学习笔记_app自动化测试_通用操作_20200811
程序员文章站
2024-03-23 10:40:10
...
Python3学习笔记_app自动化测试_通用操作_20200811
API操作
-driver.start_activity() 跳动到指定的页面
-swipe() 滑动
-触屏操作
-多指操作(放大,缩小)
-键盘输入
app元素操作
-id
-content-desc=====>driver.find_element_by_accessibility_id()
-uiautomator======>driver.find_element_by_android_uiautomator()
-xpath
元素定位的辅助工具(123表示优先级)
-3、appium inspect
-1、uiautomator.bat
使用这个工具的时候,一定要确保adb能连接到设备,
优点:比appium inspect 方便一些
当手机版本比较高的时候,会出现不兼容
-2、weditor
网易出的
纯Python的
安装使用pip install即可
终端输入weditor启动服务
三款辅助工具不要同时使用,会冲突
复制xpath
显示一个元素的坐标
自动生成Python代码(Python 的 Uiautomator2 的代码)
appium server遇到 No ‘uiautomator’ process has been found 或者是uiautomator init failed
先kill第三方的辅助工具:weditor(不只关闭浏览器,还有weditor服务)
通过以下命令查找 uiautomator 服务
adb shell pm list package | grep uiautomator
【如果是Linux系统或者是Mac就用grep,如果是Windows,就用findStr】
得到的结果类似于:
package:io.appium.uiautomator2.server
(也可以查看 instrumenntation:
adb shell pm list instrumentation
得到的结果类似于:
instrumentation:io.appium.uiautomator2.server.test/android.support.test.runner
.AndroidUnitRunner(target=io.appium.uiauutomator2.server))
卸载 uiautomator2 服务【或者是卸载uiautomator和uiautomator2服务】
adb uninstall io.appium.uiautomator2.server
adb uninstall io.appium.uiautomator2.server.test
重启appium
driver.quit()
当执行完程序以后,一定要加上 quit()
当执行完程序以后,appium 会自动退出,但是appium 会进行检测,在一分钟之内没有进行其他的操作,默认结束了操作,就会退出
这次的session,但是这种操作非常的不稳定,会造成下一次的session和这次的session冲突,一旦session发生冲突,就会除夕
出现很多错误,比如元素定位不成功、连接不上设备等问题,所以还一定要手工加上quit()
如果出现了这种问题,第一:重启模拟器,第二重新加上quit()以后再次运行脚本
面试题:
生成器
测开的问题
比如:
yield
excel里面的sheet.rows
实现一个惰性求值
让异步编程变成了可能
Python里面的协程就是用生成器实现的
垃圾回收机制
主要是用到了引用计数的技术
变量名贴标签就是引用的过程
类似于C语言中的指针,只是简化了指针的行为
变量使用完了之后,通过引用计数的方式去清除
swipe
size=driver.get_window_size()
width=size['width']
height=size['height']
# 向左边滑
# 这个就是滑动的标准操作
driver.swipe(
start_x=width*0.9,
start_y=height*0.5,
end_x=width*0.1,
end_y=height*0.5
)
TouchAction
action=TouchAction()
action.press().wait().move_to().wait().move_to().release().perform()
链式调用
九宫格的操作步骤
press 九宫格第一个格子,坐标确认
wait
move_to 第二,
wait
move_to 第三,
wait
move_to 第四,
wait
release()
perform()
元素定位的时候,每个元素都有自己的起始坐标和元素的长度
el.rect()
下一篇: websocket(一)封装使用