一、定位控件的API
1、 id定位
-
通过检查器窗口,可以查看对象的id属性。
- 使用方法(在生成驱动的前提下进行):
driver.find_element_by_id('com.tencent.mm:id/drq')
2、name定位
driver.find_element_by_name('登录')
3、class name定位
driver.find_element_by_class_name('android.widget.Button')
4、xpath定位
driver.find_element_by_xpath('/hierarchy/android.widget.FrameLayout/an
droid.widget.LinearLayout/android.widget.FrameLayout/android.view.Vie
w/android.widget.FrameLayout/android.widget.LinearLayout/android.widg
et.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLa
yout/android.widget.Button[1]')
5、注意事项:
- name,classname以及xpath往往会获取多个元素,
find_element_by_*
方法只会返回找到的第一个,如果返回多个,使用find_elements_by_*
方法。
- name,classname以及xpath往往会获取多个元素,
- 个人觉得在原生app上不要使用xpath定位。
二、应用操作的API
官方问答:http://appium.io/docs/cn/writing-running-appium/appium-bindings/#_1
1、安装应用
安装应用到设备中,需要apk包的路径。
driver.install_app("D:\\android\\apk\\some.apk")
2、卸载应用
driver.remove_app("com.tencent.mm") # 填写你要卸载的app包名
3、关闭应用
关闭打开的应用,关闭desired capabilities中指定的app,所以不用传入参数。
driver.close_app
4、启动应用
启动desired capabilities中指定的app
driver.launch_app
5、检查是否安装
driver.is_app_installed('com.tencent.mm')
6、将应用置于后台
将当前活跃的应用程序发送到后台,这个方法需要传入参数,指定置于后台的时长。
driver.background_app(2)
7、重置
重置当前app
river.reset()
三、appium键盘操作的API
1、send_keys
url_input = driver.find_element_by_id(id_='com.android.browser:id/url').send_keys(''https://www.jetstar.com/cn/zh/home'')
2、press_keycode
appium扩展提供了一个press_keycode
方法,该方法Android特有。需要传入一个参数。
driver.press_keycode(66)
下面提供Android keycode参考表:
- 电话键
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_ALT_LEFT Alt+Left
KEYCODE_ALT_RIGHT Alt+Right
KEYCODE_CTRL_LEFT Control+Left
KEYCODE_CTRL_RIGHT Control+Right
KEYCODE_SHIFT_LEFT Shift+Left
KEYCODE_SHIFT_RIGHT Shift+Right - 基本键
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
四、TouchAction操作的API
appium的辅助类,主要针对手势操作,比如滑动,长按,拖动等。跟selenium中的action chain相同。
1、按压控件
方法:press(self, el=None, x=None, y=None)
开始按压一个元素或者坐标点(x,y)。通过手指按压手机屏幕某个位置。
例如:
TouchAction(driver).press(x=231, y=498).release().perform()
- release() 取消屏幕上的指针,也可以理解为松开手指
- perform()执行操作发送到服务器
2、长按控件
方法:long_press(selef, el=None, x=None, y=None, duration=1000)
相比press()方法,long_press()多了一个参数,duration,以毫秒为单位,默认1000毫秒表示1秒钟。用法与press()相同
例如:
TouchAction(driver).long_press(x=231, y=498, duration=2000).release().perform()
3、点击控件
方法:tap(self, element=None, x=None, y=None, count=1)
对一个元素或者控件执行点击操作。count代表点击次数。
例如:
TouchAction(driver).tap(x=231, y=498).release().perform()
4、移动
方法:move_to(self, el=None, x=None, y=None)
将指针从上一个点移动到指定的元素或点。
例如:
TouchAction(driver).move_to(x=231, y=498).perform()
5、暂停
方法:wait(self, ms=0)
,暂停,单位为毫秒。
五、其他操作
1、息屏
方法:lock(self, seconds=None)
,息屏seconds秒,如果seconds=None会一直黑屏直到调用unlock方法。
driver.lock(seconds=3)
2、点亮屏幕
方法:driver.unlock(self)
3、收起键盘
方法:driver.hide_keyboard()
4、滑动
方法:def swipe(self, start_x, start_y, end_x, end_y, duration=None)
,模拟用户从一个点滑动到另一个点。