Appium Desktop是一款用于Mac、Windows和Linux的开源应用。它是Appium更为优化的图形界面和appium相关的工具的组合:
Appium-Server的图形界面。可以设置选项、启动/停止服务器、查看日志等功能;且无须提前安装Node / NPM,因为Node运行时直接与Appium Desktop绑定。
可以使用AppiumDesktop自带的Inspector来查看应用程序的元素,并进行基本的交互。
https://www.jianshu.com/p/4e00f725bf75
根据自己的系统版本来下载 (点我查看系统版本)
64位:链接: https://pan.baidu.com/s/1JGuIbIv1JpKPqox0_nz3Cw 提取码: 1234
32位:链接: https://pan.baidu.com/s/1FtWhm3AFXLslk7YFOG3w6g 提取码: 1234
若已经装了python环境则忽略这一步
教程传送门:http://www.runoob.com/python/python-install.html
在cmd里面运行下面的代码:
pip3 install Appium-Python-Client -i https://pypi.tuna.tsinghua.edu.cn/simple
1.下载并安装雷电模拟器:http://www.ldmnq.com/
2.打开雷电模拟器
链接:https://pan.baidu.com/s/1M6pcs1sI4hsEvAQOTv8KfQ
提取码:1234
使用的是手机:打开安卓手机的USB调试,用数据线连接手机和电脑
使用的是模拟器:直接去执行adb devices
在windows命令提示符中输入:adb devices,能看到手机连上电脑既可
在VSCode中新建Python文件,并且输入对应代码运行查看效果
根据自己的手机来修改代码中对应的参数
# 1.导入appium的webdriver
from appium import webdriverdef get_driver():"""获取设备driver"""desired_caps = {}desired_caps['platformName'] = 'Android' # 打开什么平台的app,固定的 > 启动安卓平台desired_caps['platformVersion'] = '5.1.1' # 安卓系统的版本号:adb shell getprop ro.build.version.releasedesired_caps['deviceName'] = 'vivo x6plus d' # 手机/模拟器的型号:adb shell getprop ro.product.modeldesired_caps['appPackage'] = 'io.appium.android.apis' # app的名字:# 安卓8.1之前:adb shell dumpsys activity | findstr "mFocusedActivity"# 安卓8.1之后:adb shell dumpsys activity | findstr "mResume"desired_caps['appActivity'] = '.ApiDemos' # 同上↑desired_caps['unicodeKeyboard'] = True # 为了支持中文desired_caps['resetKeyboard'] = True # 设置成appium自带的键盘# 去打开app,并且返回当前app的操作对象driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)return driverdef test():"""查找单个元素"""# 获取driverdriver = get_driver()# 通过id获取元素:最准确app = driver.find_element_by_id("android:id/text1")app.click()# 返回键driver.back()# 通过text获取元素Animation = driver.find_element_by_android_uiautomator('new UiSelector().text("Animation")')Animation.click()# 返回键driver.back()# 通过content-desc来获取元素app = driver.find_element_by_accessibility_id("App")app.click()# 返回键driver.back()# 通过xpath获取:使用最多media = driver.find_element_by_xpath("//android.widget.TextView[@text='Media' and @content-desc='Media']")media.click()if __name__ == "__main__":test()
由于AppiumDesktop版本已经屏蔽掉AppiumServer的一些定位方式,导致以往AppiumServer的一些定位方式在AppiumDesktop中不能使用。
首先,在AppiumDesktop中,可以直接使用自带的inspector进行元素定位,可以弃用安卓自带的uiautomatorviewer,不得不说,这样子效率大大提高。
AppiumDesktop V1.6以后仅支持以下定位方式:
driver.find_element_by_accessibility_id(“Accessibility”)
driver.find_element_by_xpath()
电话键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
1、appium启动任意的Activity
在手机上启动任意的Activty用driver.start_activity方法,
如果启动的Activity不是测试应用程序的一部分,它也将启动该活动的应用程序。具体的方法如下:driver.start_activity('com.foo.app', '.MyActivity')
2、检索应用程序字符串
driver.app_strings方法返回应用程序的字符串strings = driver.app_strings()
3、向安卓设备发送一个按键事件
driver.press_keycode(3)详细代码见附录
4、查看当前的Avtivty
activity = driver.current_activity assertEquals('.ApiDemos', activity)
5、锁定屏幕
driver.lock(5)
6、将 app 置于后台,把当前应用放到后台去
driver.background_app(5)
7、收起键盘
driver.hide_keyboard()
8、启动 Activity
在当前应用中打开一个 activity 或者启动一个新应用并打开一个 activity。
只能在 Android 上使用。driver.start_activity('com.example.android.apis', '.Foo')
9、打开通知栏 (Notifications),打开下拉通知栏 只能在 Android 上使用
driver.open_notifications()
10、检查应用是否已经安装
driver.is_app_installed('com.example.android.apis')
11、安装应用
driver.install_app('path/to/my.apk')
12、删除应用
driver.remove_app('com.example.android.apis')
13、模拟设备摇晃
driver.shake()
14、关闭应用
driver.close_app()
15、启动 (Launch)
根据服务关键字 (desired capabilities) 启动会话 (session) 。
请注意这必须在设定 autoLaunch=false 关键字时才能生效。这不是用于启动指定的 app/activities ,
你可以使用 start_activity 做到这个效果,
这是用来继续进行使用了 autoLaunch=false
关键字时的初始化 (Launch) 流程的。driver.launch_app()
16、重置 (Reset)
driver.reset()
17、可用上下文 (context)
列出所有的可用上下文翻译备注:context可以理解为 可进入的窗口 。
例如,对于原生应用,可用的context和默认context均为NATIVE_APPdriver.contexts
18、当前上下文 (context)
driver.current_context
19、切换到默认的上下文 (context)
将上下文切换到默认上下文driver.switch_to.context(None)
20、应用的字符串 (App Strings)
获取应用的字符串driver.app_strings
21、按键事件 (Key Event)
给设备发送一个按键事件driver.keyevent(176)
22、触摸动作(TouchAction) / 多点触摸动作(MultiTouchAction)
生成触摸动作的接口。这部分文档很快将会补充更多的内容进来。action = TouchAction(driver)action.press(element=el, x=10, y=10).release().perform()
23、滑动(Swipe)
模拟用户滑动driver.swipe(start=75, starty=500, endx=75, endy=0, duration=800)
24、捏 (Pinch)
捏屏幕 (双指往内移动来缩小屏幕)driver.pinch(element=el)
25、放大 (Zoom)
放大屏幕 (双指往外移动来放大屏幕)driver.zoom(element=el)
26、滑动到 (Scroll To)
滑动到某个元素。todo: python
27、拉出文件 (Pull File)
从设备中拉出文件driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')
28、推送文件(Push file)
推送文件到设备中去driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')```
上一篇:Linux基础指令
下一篇:通信原理笔记—增量调制(∆M)