appium自动化测试- 元素操作
本文转自:https://www.cnblogs.com/sinder2018/articles/9699801.html
一、滑动屏幕
1、appium - 滑动屏幕
滑动接口:
swipe(起始X,起始Y,结束X,结束Y)
结束X - 起始X:X轴滑动的距离
结束Y - 起始Y:Y轴滑动的距离
Q:手机的屏幕有很多,如何兼容?
2、appium - 上下左右滑动屏幕
原理:
1、先获取设备的屏幕大小(长、宽)
2、在设置滑动的距离与屏幕大小的百分比。
3、调用滑动接口执行滑动操作
获取当前窗口大小的接口:
get_window_size:返回窗口的宽和高
滑动接口:
swipe(起始X,起始Y,结束X,结束Y)
二、appium - 模拟触屏
TouchAction类:
将一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接收到该链条后,解析各个动作,逐个执行。
短按(press)
长按(longPress)
点击(tap)
移动到(move_to) x,y相对上一个坐标的移动位置
等待(wait)
释放(release)
执行(perform)
取消(cancel)
三、安装/卸载/关闭/启动
启动Activity:
driver.start_activity()
在当前app打开一个activity,或者新打开一个应用并启动一个activity,仅支持Android。
安装应用:
driver.install_app('path/to/my.apk')
卸载应用:
driver.remove_app('com.example.android.apis')
关闭应用:
driver.close_app()
应用是否已安装:检测应用是否已被安装。
driver.is_app_installed('com.example.android.apis')
四、拉取/推送文件
拉取(pull)文件
从设备上拉取文件。
driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')
推送(push)文件
推送文件到设备
data="same data for the file"
path="/data/local/tmp/file.txt"
driver.push_file(path,data.encode("base64"))
五、锁定/将应用切换至后台
锁定屏幕(IOS):
driver.lock(秒)
将应用切换至后台:
background_app({"timeout":secs})
将当前的应用切换到后台,然后可以让其在指定时间内回到前台,或者让它一直留在后台。
传递这个方法的参数有两种类型:
一个整型(秒):表示后台维持多久。-1表示持续置于后台。这种风格的参数已被弃用。
一个看起来像{"timeout":secs}对象。里面secs是含义和第一个类型一样的整型数字,(即表示置于后台多少秒),或者为null(表示持续置于后台)
driver.background_app(5)#置于后台,持续5秒
driver.background_app(-1)#持续置于后台
driver.background_app({"timeout":None})#持续置于后台
六、打开通知栏/摇一摇
打开通知栏:
仅支持Android。
driver.open_notifications()
摇一摇:
模拟摇晃设备的操作:
driver.shake()
七、手势操作
捏(Pinch)手势:在屏幕上使用捏(Pinch)手势
driver.pinch(element=el)
放大屏幕(Zoom):在屏幕上使用放大手势
driver.zoom(element=el)
flick(self,start_x,start_y,end_x,end_y,):从屏幕A点快速滑动到B点
drag_and_drop(self,origin_el,destination_el):把控件origin_el拖拽到destination_el的位置
八、按键操作
按键发送(Android)
driver.press_keycode(键的keycode)
九、上下文切换
1、可用的上下文(Contexts)
列出所有可用的上下文(contexts)
driver.contexts
2、当前上下文(context):列出当前的上下文(context)
driver.current_context
3、切换至默认的上下文(context)
切换回默认的上下文(context).(译者注:一般就是原生上下文“native_app")
driver.switch_to.context(None)
4、当前Activity:获取当前的Activity。仅支持Android.
driver.current_activity
5、当前包名(package):获取当前包名(package)。仅支持Android.
driver.current_package
十、H5识别 - webview
tips:
1、在手机\模拟器中点击关于手机的版本号5下,出来开发者选项
2、在开发者选项中勾选上显示布局界面
3、如果是HTML的界面,那界面不会有布局界面显示,如果有则说明是native的界面
adb shell dumpsys activity | find "mFocusedActivity" ----查看前台应用activity名
十一、常见问题
contexts只能获取NATIVE_APP,无法获取WEBVIEW
使用uiautomatorview定位元素,显示class值为:android.webkit.WebView
但是driver.contexts只打印出了"NATIVE_APP"
解决方法:
1、APP打包的时候需要开启webview的debug属性setWebContentDebuggingEnabled(true)
这个直接让开发加上就好
2、模拟器的contexts中有webview,但是有些手机没有,官方给出的答案是:需要将手机root,然后再去获取
appium自动化测试- 元素操作的更多相关文章
- Appium移动端自动化测试--元素操作与触摸动作
常见自动化动作支持 click sendKeys swipe touch action 元素操作 1.click()点击操作 也可以用tab实现点击操作 driver.find_element_by_ ...
- python - web自动化测试 - 元素操作 - 窗口切换
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: 元素操作-切换.py @ide: PyCharm Community ...
- python - web自动化测试 - 元素操作 - 鼠标键盘
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: 鼠标操作.py @ide: PyCharm Community Edi ...
- python - web自动化测试 - 元素操作 - 等待
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: wait.py @ide: PyCharm Community Edi ...
- python - web自动化测试 - 元素操作 - 定位
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: find_ele.py @ide: PyCharm Community ...
- Python+Appium自动化测试(9)-自动选择USB用于传输文件(不依赖appium对手机页面元素进行定位)
一,问题 app自动化测试使用Android真机连接电脑时,通常会遇到两种情况: 1.测试机连接电脑会弹窗提示USB选项,选择USB用于"传输文件",有些手机不支持设置默认USB选 ...
- Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法
在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...
- Appium -选择、操作元素
选择界面元素 操作元素(点击.输入字符.拖拽.获取页面元素的各种属性) 根据Appium获取的数据进行分析和处理 desired_capabilities 查看appPackage 和appActiv ...
- Appium之选择/操作元素
Appium是如何选择.操作元素的呢? appium自动化 ------ 选择界面 元素 操作元素 ------- ① 点击 ② 输入字符 ③ 拖拽 ④ 获取页面元素的各种属性 根据appium ...
随机推荐
- 2018-2019-2 20175307实验三《敏捷开发与XP实践》实验报告
实验三 敏捷开发与XP实践-1 1.仔细学习了http://www.cnblogs.com/rocedu/p/4795776.html,发布了一篇关于Google的Java编码的博客,具体内容就不在这 ...
- 左手Mongodb右手Redis
第二章,了解Mongodb保存数据 Mongodb对于每次插入的数据没有要求,字段可以随便变动,字段类型可以随意变动. Mongodb可以并发插入上万条文档,这是传统关系型数据库不能望其项背的. 1. ...
- Bootstrap Date Range Picker
var optionSet1 = { startDate: moment().subtract(29, 'days'), endDate: moment(), minDate: '12/21/2012 ...
- iview+vue 表格任一项实现鼠标划上显示内容
在新版本的iview中,表格新增了tooltip功能: 但做项目时并不是新的iview版本,又不想升级,如何才能实现当内容过多鼠标划上显示内容?下边是我做项目时的改动: { // fixed: 'le ...
- nginx 配置代理 session 丢失
最开始一直用的ip访问的项目是没问题的 , 后来改成用了域名访问就发现一直获取不了session ,最开始以为是跨域问题 , 但项目中已经配置了跨域 , 因为第一次用 nginx ,果断入坑了 , ...
- 兼容ie浏览器的方法
让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法 最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,f ...
- OSG+Visual Studio2015项目变量设置;
OSG源码经过CMAKE编译后: 1.配置OSG环境变量: 用户变量的PATH中添加路径 C:\OSG\bin系统变量中添加新变量OSG_FILE_PATH为 C:\OSG\data 2.VS新建项目 ...
- 百度网盘不限速-Motrix
目录: Windows 下使用 Motrix Mac 下使用 BaiduNetdiskPlugin-macOS Mac 下使用 Motrix Windows 系统 Motrix 1. Google ...
- PostgreSQL 荣获 2019 年 O'Reilly 终身成就奖
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来自:开源中国社区 https://www.oschina.net/news/108436/pg-wins-2019-ore ...
- C#设计模式V2(1)——单例模式
出自:https://www.cnblogs.com/zhili/p/SingletonPatterm.html 一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计 ...