一、获取手机分辨率

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接口的更多相关文章

  1. appium 基础:常用api接口(2)

    一.获取手机分辨率 size=driver.get_window_size()#获取手机屏幕大小,分辨率 print(size)#{'width': 720, 'height': 1280} 得到的是 ...

  2. 常用API接口汇总

    下面列举了100多个国内常用API接口,并按照 笔记.出行.词典.电商.地图.电影.即时通讯.开发者网站.快递查询.旅游.社交.视频.天气.团队协作.图片与图像处理.外卖.消息推送.音乐.云.语义识别 ...

  3. 常用API接口

    引用  常用API接口汇总

  4. html5视频常用API接口

    一.虽然有的属性是boolean类型,但仍旧建议按照XHTML书写(属性名=”属性值”)格式,避免出现错误 (下面加粗的属性为常用属性) 属性 值 功能描述 controls controls 是否显 ...

  5. 转载-常用API接口签名验证参考

    原文地址: http://www.cnblogs.com/hnsongbiao/p/5478645.html 写的很好,就做个笔记了.感谢作者! 项目中常用的API接口签名验证方法: 1. 给app分 ...

  6. 常用API接口签名验证参考

    项目中常用的API接口签名验证方法: 1. 给app分配对应的key.secret2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数名称将所有请求参数按照 ...

  7. java基础(15):常用API(Object、String、StringBuffer)

    1. Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象的关系.接下来我们开始使用对象做事情,那么在使用对象做事情之前,我们要学习一些API中提供的常用 ...

  8. Appium基础(二)demo

    具体配置,请看上一篇 一.启动Android模拟 Start 打开如下界面:这个过程可能会有些慢,黑屏等等,请耐心等待 二.appium配置 1.点机器人图标 PlatformVersion 选19, ...

  9. 【netcore基础】MVC API接口权限控制Attribute

    效果: 通过Attribute来简单控制某个方法的访问权限 例如: 下面api只能角色id是[001,002,999]的登录用户才能访问 /// <summary> /// 管理用户列表 ...

随机推荐

  1. java 增强for循环与泛型

    一 增强for循环 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的.它的内部 原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作 ...

  2. Vue Slots

    子组件vue <template> <div> <slot v-if="slots.header" name="header"&g ...

  3. Homekit_人体感应器

    前置需求: 苹果手机一台 Homekit人体感应一台 USB供电线一根 这款产品内置人体红外感应器,使用圆环设计,增大了其接触面积,使感应变得更加灵敏,重量轻,方便将其粘贴到墙上,同时支持二次开发,如 ...

  4. AdblockPlus自定义屏蔽广告

    AdblockPlus自定义屏蔽广告我推荐使用两种方法: 1. 使用CSS选择器 2. 使用样式选择器 屏蔽广告中,重要的一个问题就是识别广告. 我们要自己编写屏蔽就得将广告选出来,告诉Adblock ...

  5. django自带orm妙用

    django对数据库数据进行处理方式通常有以下几种方式: 1.使用原生sql对数据库进行处理:pymysql,cx_oracle 2.使用外置orm模块来对数据库进行处理:sqlalchemy 3.使 ...

  6. Flutter 状态管理之BLoC

    在正式介绍 BLoC之前, 为什么我们需要状态管理.如果你已经对此十分清楚,那么建议直接跳过这一节.如果我们的应用足够简单,Flutter 作为一个声明式框架,你或许只需要将 数据 映射成 视图 就可 ...

  7. JavaGUI之Swing简单入门示例

    简介 AWT(译:抽象窗口工具包),是Java的平台独立的窗口系统,图形和用户界面器件工具包. Swing 是为了解决 AWT 存在的问题而以 AWT 为基础新开发的包(在使用Swing时也常会用到j ...

  8. IDEA创建动态Web项目

    1.IDEA创建动态Web项目 1.1.使用IDEA创建动态Web项目,选择Java Enterprise,记得选择服务器,我这里使用的时tomcat 1.2记得勾选Web Application,其 ...

  9. GPU虚拟机创建时间深度优化

    ​桔妹导读:GPU虚拟机实例创建速度慢是公有云面临的普遍问题,由于通常情况下创建虚拟机属于低频操作而未引起业界的重视,实际生产中还是存在对GPU实例创建时间有苛刻要求的业务场景.本文将介绍滴滴云在解决 ...

  10. 目标追踪(Object Tracking)概念的简要介绍

    现在我们有一个视频流,可以拆解出 N 个帧出来,这时候初始帧/某一帧中出现了一个我们感兴趣目标,我们希望在后续帧中对这个目标进行追踪,这时候就需要 CV 中的目标追踪: 目标追踪的效果如下: 虽然效果 ...