appium 基础二:常用api接口
一、获取手机分辨率
size=driver.get_window_size()#获取手机屏幕大小,分辨率
print(size)#{'width': 720, 'height': 1280}
得到的是一个字典,从而获取到手机的宽和高
height=size.get('height')
width=size.get('width')
二、滑屏和拖拽
通过坐标实现划屏操作。那么首先我们要设置起始坐标的x,y和终点坐标的x,y。然后通过swipe方法实现划屏
s_x=width*0.5#0.5相当于宽度的一半,此处采用了百分比的方式
s_y=height*0.8 e_x=width*0.5
e_y=height*0.2
driver.swipe(s_x,s_y,e_x,e_y,500)#滑动
拖拽
# 拖拽
# elementObj1源元素,elementObj2目标元素
# 通过long_press实现
driver.drag_and_drop(elementObj1, elementObj2)
触控
# 多点触控 模拟手指点击
# tap模拟按住坐标多少秒,[(x,y)] 多个坐标则写多个元祖。参数2为按住多少秒。ms(毫秒)为单位
driver.tap([(x, y)], 5000)
三、操作app
# 返回是否安装了对应包名的App True 或者 False
driver.is_app_installed('com.syqy.wecash') # 关闭初始化信息中的App
driver.close_app() # 启动初始化信息中的App
driver.launch_app() # 安装app 参数为软件的绝对路径
driver.install_app(r'C:\Users\bjhouyafan\Desktop\tester\appUi\wecash.apk') # 卸载app 参数接收appPackageName
driver.remove_app('com.syqy.wecash')
driver.hide_keyboard()#收起键盘
driver.background_app(5)#应用置于后台2s
driver.shake()#摇晃(Shake) 模拟设备摇晃
start_activity:
1、启动app
我们在运行程序时,默认有配置app信息,在程序运行时,默认启动已配置好的app。那么此时如果我们想要开启其他的app,就可以用这个方法
#配置的手机信息中,启动的是qq,这里close_app后,关闭app,然后再start_activity启动别的app=>设置
driver.close_app()
driver.start_activity('com.android.settings','.Settings')
2、通过页面入口,直接打开页面,略过前面的步骤
比如qq,默认是启动页面--登录/注册---登录页或者注册页。我们可以用这个方法,使得不用经过登录/注册页,直接启动注册页。
步骤:
1、先进入到登录/注册页面,点击注册进入注册页面后
2、获取当前页面的activity
driver.current_activity 这个就是注册页面的入口
3、用start_activity方法,直接启动该页
driver.start_activity('com.tencent.mobileqq','.activity.RegisterPhoneNumActivity')#包名,指定页面的入口
四、清缓存
driver.reset()#清缓存
相当于手机配置信息中的
desc["noReset"] = "False"#表示需要初始化手机信息
desc["noReset"] = "True"#不初始化手机app信息(类似不清楚缓存)
五、NATIVE_APP 与 WEBVIEW 上下文操作
手机app有原生app和混合app两种。混合App就是HTML5 App,混合App通常由两部分组成,HTML5云网站+App应用客户端
如果手机app中嵌套了h5页面,我们就不能够直接操作h5,需要先进行切换。见到标签中显示webview,就说明时h5页
# 返回当前session中的app类型
driver.current_context # 获取app所有的类型
# 有WEBVIEW的则以list的形式展示两个
res=driver.contexts # app类型切换 参数接收app类型
# appium对selenium的switch_to的扩展
# 增加了MobileSwitchTo,继承了selenium的switch_to
driver.switch_to.context(res[1])
默认进入app,指针在原生app NATIVE_APP上。如果此时想要进入webview中操作元素,就要先进性切换
#比如我们模拟器中的浏览器,进入后,输入某个网址打开网页。此时当前页面就既有原生,也有h5.网页的地址栏时原生的。网页的正文肯定时h5的 print(driver.contexts)#返回当前手机app类型,应该会有2个,一个原生的,一个webview的: ['NATIVE_APP', 'WEBVIEW_com.android.browser'] driver.switch_to.context(driver.contexts[1])#从原生切换到webview
六、键盘keycode
# 隐藏键盘
driver.hide_keyboard() # 发送按键码,仅按一下,与press_keycode相同
# 可接收str或int的code码
driver.keyevent(3) # 发送按键码,仅按一下,可接收str或int的code码
driver.press_keycode(24) # 发送一个长按的按键码,接收参数必须是int的code码
driver.long_press_keycode(25)
键盘对应的keycode可百度查询。比如enter回车键对应的码就是66.如果想要操作回车,可直接写driver.press_keycode(66)就代表按下了回车
| CODE_ENTER | 回车键 | 66 |
| KEYCODE_ESCAPE | ESC键 | 111 |
| KEYCODE_DPAD_CENTER | 导航键 确定键 | 23 |
| KEYCODE_DPAD_UP | 导航键 向上 | 19 |
| KEYCODE_DPAD_DOWN | 导航键 向下 | 20 |
| KEYCODE_DPAD_LEFT | 导航键 向左 | 21 |
| KEYCODE_DPAD_RIGHT | 导航键 向右 | 22 |
| KEYCODE_MOVE_HOME | 光标移动到开始键 | 122 |
| KEYCODE_MOVE_END | 光标移动到末尾键 | 123 |
| KEYCODE_PAGE_UP | 向上翻页键 | 92 |
| KEYCODE_PAGE_DOWN | 向下翻页键 | 93 |
| KEYCODE_DEL | 退格键 | 67 |
| KEYCODE_FORWARD_DEL | 删除键 | 112 |
| KEYCODE_INSERT | 插入键 | 124 |
| KEYCODE_TAB | Tab键 | 61 |
| KEYCODE_NUM_LOCK | 小键盘锁 | 143 |
| KEYCODE_CAPS_LOCK | 大写锁定键 | 115 |
| KEYCODE_BREAK | Break/Pause键 | 121 |
| KEYCODE_SCROLL_LOCK | 滚动锁定键 | 116 |
| KEYCODE_ZOOM_IN | 放大键 | 168 |
| KEYCODE_ZOOM_OUT | 缩小键 | 169 |
| KEYCODE_0 | 按键'0' | 7 |
| KEYCODE_1 | 按键'1' | 8 |
| KEYCODE_2 | 按键'2' | 9 |
| KEYCODE_3 | 按键'3' | 10 |
| KEYCODE_4 | 按键'4' | 11 |
| KEYCODE_5 | 按键'5' | 12 |
| KEYCODE_6 | 按键'6' | 13 |
| KEYCODE_7 | 按键'7' | 14 |
| KEYCODE_8 | 按键'8' | 15 |
| KEYCODE_9 | 按键'9' | 16 |
| KEYCODE_A | 按键'A' | 29 |
| KEYCODE_B | 按键'B' | 30 |
| KEYCODE_C | 按键'C' | 31 |
| KEYCODE_D | 按键'D' | 32 |
| KEYCODE_E | 按键'E' | 33 |
| KEYCODE_F | 按键'F' | 34 |
| KEYCODE_G | 按键'G' | 35 |
| KEYCODE_H | 按键'H' | 36 |
| KEYCODE_I | 按键'I' | 37 |
| KEYCODE_J | 按键'J' | 38 |
| KEYCODE_K | 按键'K' | 39 |
| KEYCODE_L | 按键'L' | 40 |
| KEYCODE_M | 按键'M' | 41 |
| KEYCODE_N | 按键'N' | 42 |
| KEYCODE_O | 按键'O' | 43 |
| KEYCODE_P | 按键'P' | 44 |
| KEYCODE_Q | 按键'Q' | 45 |
| KEYCODE_R | 按键'R' | 46 |
| KEYCODE_S | 按键'S' | 47 |
| KEYCODE_T | 按键'T' | 48 |
| KEYCODE_U | 按键'U' | 49 |
| KEYCODE_V | 按键'V' | 50 |
| KEYCODE_W | 按键'W' | 51 |
| KEYCODE_X | 按键'X' | 52 |
| KEYCODE_Y | 按键'Y' | 53 |
| KEYCODE_Z | 按键'Z' | 54 |
七、错误及解决办法
1、目标及计算机拒绝
服务没有启动,需要启动服务:在cmd窗口输入appium 或者直接打开appium-desktop
2、send_keys方法错误

这个是send_keys方法不可用,解决办法:直接用另一个办法就行set_vallue()
3、appium与chromedriver版本不匹配

appium版本过高,降低版本即可
步骤:
1、先卸载当前版本:npm uninstall appium -g
2、安装制定低版本
npm -g install appium@1.7.0 这个命令需要翻墙,如果不能行的话,可以用国内镜像,或者cnpm安装
cnpm install -g appium@1.7.0 --no-cache
appium 基础二:常用api接口的更多相关文章
- appium 基础:常用api接口(2)
一.获取手机分辨率 size=driver.get_window_size()#获取手机屏幕大小,分辨率 print(size)#{'width': 720, 'height': 1280} 得到的是 ...
- 常用API接口汇总
下面列举了100多个国内常用API接口,并按照 笔记.出行.词典.电商.地图.电影.即时通讯.开发者网站.快递查询.旅游.社交.视频.天气.团队协作.图片与图像处理.外卖.消息推送.音乐.云.语义识别 ...
- 常用API接口
引用 常用API接口汇总
- html5视频常用API接口
一.虽然有的属性是boolean类型,但仍旧建议按照XHTML书写(属性名=”属性值”)格式,避免出现错误 (下面加粗的属性为常用属性) 属性 值 功能描述 controls controls 是否显 ...
- 转载-常用API接口签名验证参考
原文地址: http://www.cnblogs.com/hnsongbiao/p/5478645.html 写的很好,就做个笔记了.感谢作者! 项目中常用的API接口签名验证方法: 1. 给app分 ...
- 常用API接口签名验证参考
项目中常用的API接口签名验证方法: 1. 给app分配对应的key.secret2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数名称将所有请求参数按照 ...
- java基础(15):常用API(Object、String、StringBuffer)
1. Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象的关系.接下来我们开始使用对象做事情,那么在使用对象做事情之前,我们要学习一些API中提供的常用 ...
- Appium基础(二)demo
具体配置,请看上一篇 一.启动Android模拟 Start 打开如下界面:这个过程可能会有些慢,黑屏等等,请耐心等待 二.appium配置 1.点机器人图标 PlatformVersion 选19, ...
- 【netcore基础】MVC API接口权限控制Attribute
效果: 通过Attribute来简单控制某个方法的访问权限 例如: 下面api只能角色id是[001,002,999]的登录用户才能访问 /// <summary> /// 管理用户列表 ...
随机推荐
- 2020-07-09:mysql如何开启慢查询?
福哥答案2020-07-09: 1.参数说明 slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般 ...
- 关于Hexo,Next主题的‘下一页’、‘上一页’按钮错误显示为html代码 的解决方法
关于Next主题的'下一页'.'上一页'按钮错误显示为html代码的解决方法 我在建立自己的博客过程中遇到了页面'下一页'和'上一页'按钮显示为html代码<i class="fa f ...
- 性能分析(5)- 软中断导致 CPU 使用率过高的案例
性能分析小案例系列,可以通过下面链接查看哦 https://www.cnblogs.com/poloyy/category/1814570.html 前言 软中断基本原理,可参考这篇博客:https: ...
- TypeScript是什么,为什么要使用它?
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://medium.com/swlh/what-is-typescript-bf333e ...
- 国人开源了一款超好用的 Redis 客户端,真香!!
大家都知道,Redis Desktop Manager 是一款非常好用的 Redis 可视化客户端工具,但可惜的是 v0.9.4 版本之后需要收费了: 这个工具不再免费提供安装包了,要对所有安装包收费 ...
- Maccms 后门分析
(该文参考网络他人资料,仅为学习,不许用于非法用途) 一.环境 攻击者 : Kali Linux 被攻击者 :Windows Maccms 网站基于php+mysql 的系统,易用性.功能良好等优点 ...
- 安装centos7显示器分辨率不适配的解决方法
1,系统读取安装信息后,选择Install Centos7 然后Tab调出参数行 2,在quiet后空格输入nomodeset回车即可
- machine vision plan
以OpenCV+C#/C++为主,Halcon+C#/C++.LabVIEW+NI Vision,其他还不了解 目前:Halcon+C# 1.完成:测量定位,表面质量检测 2.完成1后开始:OpenC ...
- neutron plugin 与 extension 编写流程
原文链接:neutron plugin 与 extension 编写流程 参考: 怎样写 OpenStack Neutron 的 Plugin (一)怎样写 OpenStack Neutron 的 P ...
- Better Key Sizes (and Attacks) for LWE-Based Encryption
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文 Abstract 基于“learning with errors”(LWE)问题,分析了理 ...