Appium桌面程序中的API及在Appium-Python-Client中的使用(二十三)

一、定位控件的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、注意事项:
    1. name,classname以及xpath往往会获取多个元素,find_element_by_*方法只会返回找到的第一个,如果返回多个,使用find_elements_by_*方法。
    1. 个人觉得在原生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),模拟用户从一个点滑动到另一个点。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容