赞
踩
Appium Desktop是一款用于Mac、Windows和Linux的开源应用。它是Appium更为优化的图形界面和appium相关的工具的组合:
Appium-Server的图形界面。可以设置选项、启动/停止服务器、查看日志等功能;且无须提前安装Node / NPM,因为Node运行时直接与Appium Desktop绑定。
可以使用AppiumDesktop自带的Inspector来查看应用程序的元素,并进行基本的交互。
https://blog.csdn.net/m0_49879527/article/details/128805291?spm=1001.2014.3001.5501
根据自己的系统版本来下载 (点我查看系统版本)
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 webdriver def get_driver(): """ 获取设备driver """ desired_caps = {} desired_caps['platformName'] = 'Android' # 打开什么平台的app,固定的 > 启动安卓平台 desired_caps['platformVersion'] = '5.1.1' # 安卓系统的版本号:adb shell getprop ro.build.version.release desired_caps['deviceName'] = 'vivo x6plus d' # 手机/模拟器的型号:adb shell getprop ro.product.model desired_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 driver def test(): """ 查找单个元素 """ # 获取driver driver = 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_APP
driver.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')```
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。