appium 常用api介绍(1)
前言:android手机大家都很熟悉,操作有按键、触摸、点击、滑动等,各种操作方法可以通过api的方法来实现。
参考博文:http://blog.csdn.net/bear_w/article/details/50330565
1.click
click(self):
Clicks the element(点击元素 )
用法 element.click()
driver.find_element_by_id('com.huawei.camera:id/shutter_button').click()
2.shake
shake(self):
Shake the device(摇一摇手机 )
用法 driver.shake()
driver.shake()
3.close
close(self):
Closes the current window(关闭当前窗口 )
用法: driver.close()
driver.close()
4.quit
quit(self):
Quits the driver and closes every associated window(退出脚本运行并关闭每个相关的窗口连接 )
用法: driver.quit()
driver.quit()
5.size
size(self):
The size of the element【获取元素的大小(高和宽)】
new_size["height"] = size["height"]
new_size["width"] = size["width"]
用法 driver.element.size
driver.get_window_size()['width']
driver.get_window_size()['height']
函数的写法
#创建一个size方法获取手机屏幕大小x,y的函数
def getSize():
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return (x, y)
#调取函数
w_size=getSize()
6. swipe
swipe(self, start_x, start_y, end_x, end_y, duration=None):
Swipe from one point to another point, for an optional duration(从A点滑动至B点,滑动时间为毫秒)
:Args: - start_x - x-coordinate at which to start (滑动起点x坐标)
- start_y - y-coordinate at which to start(滑动起点y坐标)
- end_x - x-coordinate at which to stop(滑动终点x坐标)
- end_y - y-coordinate at which to stop(滑动终点y坐标)
- duration - (optional) time to take the swipe, in ms.(滑动时间设定,单位ms,默认5ms)
:Usage: driver.swipe(start_x, start_y, end_x, end_y,duration)
用法 driver.swipe(x1,y1,x2,y2,500)
swipe方法需要确定滑动的起点和终点坐标,由于不同手机的分辨率有可能不同,如果指定一个固定的坐标,在其他手机上不一定适用,所以最好结合上面的size方法来获取手机屏幕大小,使用相对坐标定位滑动。
android系统的坐标系,左上角是坐标原点,水平方向是x轴,垂直方向是y轴,如下图所示:
下面代码是结合size方法对四个方向滑动举例:
#size方法获取屏幕大小
def getSize():
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return (x, y) #屏幕向上滑动,x轴不变,y轴从大变小
def swipeUp(t):
w_size = getSize()
x1 = int(w_size[0] * 0.5) #获取x坐标,根据实际调整相乘参数
y1 = int(w_size[1] * 0.8) #获取起始y坐标,根据实际调整相乘参数
y2 = int(w_size[1] * 0.2) #获取终点y坐标,根据实际调整相乘参数
driver.swipe(x1, y1, x1, y2,t) #屏幕向下滑动,x轴不变,y轴从小变大
def swipeDown(t):
w_size = getSize()
x1 = int(w_size[0] * 0.5) #获取x坐标,根据实际调整相乘参数
y1 = int(w_size[1] * 0.2) #获取起始y坐标,根据实际调整相乘参数
y2 = int(w_size[1] * 0.8) #获取终点y坐标,根据实际调整相乘参数
driver.swipe(x1, y1, x1, y2,t) #屏幕向左滑动,y轴不变,x轴从大变小
def swipeLeft(t):
w_size = getSize()
x1 = int(w_size[0] * 0.8) #获取起始x坐标,根据实际调整相乘参数
x2 = int(w_size[0] * 0.05) #获取终点x坐标,根据实际调整相乘参数
y1 = int(w_size[1] * 0.5) #获取y坐标,根据实际调整相乘参数
driver.swipe(x1,y1,x2,y1,t) #屏幕向右滑动,y轴不变,x轴从小变大
def swipeRight(t):
w_size = getSize()
x1 = int(w_size[0] * 0.05) #获取起始x坐标,根据实际调整相乘参数
x2 = int(w_size[0] * 0.8) #获取终点x坐标,根据实际调整相乘参数
y1 = int(w_size[1] * 0.5) #获取y坐标,根据实际调整相乘参数
driver.swipe(x1,y1,x2,y1,t)
#调用向上滑动,滑动时间参数为500ms
swipeUp(500)
sleep(2)
#调用向下滑动,滑动时间参数为500ms
swipeDown(500)
sleep(2)
#调用向左滑动,滑动时间参数为500ms
swipeLeft(500)
sleep(2)
#调用向右滑动,滑动时间参数为500ms
swipeRight(500)
7.flick
flick(self, start_x, start_y, end_x, end_y):
Flick from one point to another point(按住A点后快速滑动至B点)
:Args: - start_x - x-coordinate at which to start(滑动起点x坐标)
- start_y - y-coordinate at which to start(滑动起点y坐标)
- end_x - x-coordinate at which to stop(滑动终点x坐标)
- end_y - y-coordinate at which to stop(滑动终点y坐标)
:Usage: driver.flick(100, 100, 100, 400)
用法:driver.flick(start_x,start_y,end_x,end_y)
flick方法和swipe方法一样需要确定起点和终点坐标,只是没有时间参数,相对坐标的获取可以参考swipe方法
大概坐标的快速滑动
driver.flick(100,100,100,600)
结合size方法的快速滑动
#size方法获取屏幕大小
def getSize():
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return (x, y) #快速向上滑动,x轴不变,y轴从大变小
def flickUp():
w_size = getSize()
x1 = int(w_size[0] * 0.5) #获取x坐标,根据实际调整相乘参数
y1 = int(w_size[1] * 0.8) #获取起始y坐标,根据实际调整相乘参数
y2 = int(w_size[1] * 0.2) #获取终点y坐标,根据实际调整相乘参数
driver.flick(x1, y1, x1, y2) #调用快速向上滑动
flickUp()
8. keyevent
keyevent(self, keycode, metastate=None):
Sends a keycode to the device. Android only. Possible keycodes can be found in http://developer.android.com/reference/android/view/KeyEvent.html【发送按键码(安卓仅有),按键码可以上网址中找到 】
:Args:
- keycode - the keycode to be sent to the device
- metastate - meta information about the keycode being sent
用法 :driver.keyevent(‘4’)
keyevent方法直接发送按键码就可以了,如返回键操作
driver.keyevent('4') #返回键操作
下面是按键码列表
电话键
KEYCODE_CALL (拨号键) : 5
KEYCODE_ENDCALL (挂机键) : 6
KEYCODE_HOME (按键Home) : 3
KEYCODE_MENU (菜单键) : 82
KEYCODE_BACK (返回键) : 4
KEYCODE_SEARCH (搜索键) : 84
KEYCODE_CAMERA (拍照键) : 27
KEYCODE_FOCUS (拍照对焦键) :80
KEYCODE_POWER (电源键) : 26
KEYCODE_NOTIFICATION (通知键) : 83
KEYCODE_MUTE (话筒静音键) : 91
KEYCODE_VOLUME_MUTE (扬声器静音键) : 164
KEYCODE_VOLUME_UP (音量增加键) : 24
KEYCODE_VOLUME_DOWN (音量减小键) : 25
控制键
KEYCODE_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
appium 常用api介绍(1)的更多相关文章
- appium 常用api介绍(2)
前言:接着上一篇继续讲常用的一些api 参考博文:http://blog.csdn.net/bear_w/article/details/50330565 1.send_keys send_keys( ...
- APPIUM 常用API介绍(3)
1.send_keys send_keys(self, *value): Simulates typing into the element[在元素中模拟输入(开启appium自带的输入法并配置了ap ...
- 7、Appium常用API
嗯,官网已经介绍的很全了.会选几个常用API后期整理. Appium常用API地址:http://appium.io/docs/cn/writing-running-appium/appium-bin ...
- Appium常用API(二)
接前面的常用API(一),本文接着介绍如下: 1.press_keycode press_keycode(self, keycode, metastate=None): Sends a keycode ...
- 小程序常用API介绍
小程序常用API接口 wx.request https网络请求 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 method:"GET&qu ...
- appium 常用API使用总结!
将常用函数进行适用总结,后期在使用的过程中直接查找调用即可 获取界面属性.控件属性 1.current_activity:获取activity名称 device.current_activity 2. ...
- Appium常用API(一)
Appium作为当下一款移动应用的自动化测试工具,对于测试来说重要性不言可寓,废话不多说,下面总结下它常用的API: 1.contextscontexts(self): Returns the con ...
- appium 常用API
''.appium api第二弹 锋利的python,这是初稿,2015/1/5 如有错误的地方,请同学们进行留言,我会及时予以修改,尽量整合一份ok的api 作者:Mads Spiral QQ:79 ...
- Splinter常用API介绍(转)
# Example from splinter import Browser with Browser() as browser: # Visit URL url = "http://www ...
随机推荐
- Xslider演示8种滚动效果
Xslider演示8种滚动效果包括: 一.左右切换:每次移动固定距离 二.左右切换:最后一个显示在最右侧 三.自动切换 四.循环切换 五.文本的上下滚动 六.上下切换 七.上下自动循环切换 在线预览 ...
- 使用 HTML5 Canvas 绘制出惊艳的水滴效果
HTML5 在不久前正式成为推荐标准,标志着全新的 Web 时代已经来临.在众多 HTML5 特性中,Canvas 元素用于在网页上绘制图形,该元素标签强大之处在于可以直接在 HTML 上进行图形操作 ...
- Koala – 开源的前端预处理器语言图形编译工具
koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...
- visual studio 查找/替换对话框
工具--选项--环境--查找和替换 如下设置: 则会在查找.替换到最后时会弹出提示,比如“查找到达了搜索的起点”,如下图: 原文:http://keleyi.com/a/bjac/27iswh0p.h ...
- Web安全之CSRF攻击
CSRF是什么? CSRF(Cross Site Request Forgery),中文是跨站点请求伪造.CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任, ...
- abap--How to debug backgroud job
最近被一个朋友问起如何调试后台进程(一个abap的面试题),我一时也不知道如何答,他后来告诉我到sdn上找答案,我现在将答案收集供大家参考:Steps 1. Create variant called ...
- 深入了解SQL注入绕过waf和过滤机制
知己知彼百战不殆 --孙子兵法 [目录] 0x00 前言 0x01 WAF的常见特征 0x02 绕过WAF的方法 0x03 SQLi Filter的实现及Evasion 0x04 延伸及测试向量示例 ...
- 通过settings.db自定义Android系统默认设置
Android的系统设置数据存放在/data/data/com.android.providers.settings/databases/settings.db 中 数据库结构如下: 数据库中的默认数 ...
- android关于线程的那些事
今天发现之前自己一直有个误区,new Runnable(run()方法){}原来它不是一定创建一个线程 如果用主线程的handler去post(Runnable),他就不会创建子线程,而是在主线程上执 ...
- 布局 position
position : 设置定位方式 跟『定位』相关的有一些属性,最重要的一个是『position』,它主要是设置『定位方式』. 而定位方式最重要的是设置『参照物』. 配合 position 使用的有这 ...