一、环境搭建
准备工作:
(python、pycharm安装配置好)
1、Java SDK 安装配置
Java Downloads | Oracle
下载安装后配置系统环境变量:JAVA_HOME(jdk根目录路径)和path(jdk根目录下的bin目录路径)
2、Android SDK下载安装(也可以通过Android Studio下载)
AndroidSDK下载及安装 - 陈晓猛 - 博客园
Android 开发者 | Android Developers
下载安装后配置系统环境变量:ANDROID_HOME(SDK根目录路径)和path(platform-tools目录和tools目录两个路径)
3、模拟器安装(夜神模拟器、mumu等)
用AndroidSDK中platform-tools目录下的adb.exe文件替换模拟器bin目录下的adb.exe和nox_adb.exe文件(目的是使AndroidSDK中的adb与模拟器中的adb文件版本相同)
4、cmd中:pip install Appium-Python-Client(appium客户端)
5、下载安装appium服务端:Appium: Mobile App Automation Made Awesome.
安装后检查EditConfigurations中的环境变量是否跟本机配置的系统变量一致
二、ADB的使用(Android Debug Bridge 安卓调试桥梁)
作用:通过命令去操作手机
服务(发现代码连不上手机时)
adb kill-serveradb start-server
查看设备
adb devices
进入手机终端
adb shell
(进入终端后根据Linux命令操作)
获取手机安卓版本
adb shell getprop ro.build.version.release
获取当前运行的程序和界面的名称
adb shell dumpsys window windows | findstr mFocusedApp
文件传输
adb push 电脑上的文件 手机上的位置
adb pull 手机上的文件 电脑上的位置
(模拟器上可以直接拖拉文件实现上传)
软件 安装&卸载
adb install 电脑上的apk文件的路径
adb uninstall 应用的包名
获取其他信息
adb shell am start -w 包名\.启动名
完整实例
(appium服务和夜神模拟器处于开启状态)
cmd中通过指令获取adb shell dumpsys window windows | findstr mFocusedApp 获取包名和页面地址
import time
from appium import webdriverdesired_caps={}#连接移动设备必须的参数
# 当前要测试的设备的名称(可能开了多个模拟器或者多台手机)
desired_caps['deviceName']='127.0.0.1:62001'#cmd中adb devices
# 操作系统
desired_caps['platformName']='Android'
# 操作系统的版本
desired_caps['platformVersion']='7.1'#模拟器中查看#cmd中adb shell dumpsys window windows | findstr mFocusedApp 获取包名和页面地址# 需要启动的APP的名称(Android系统为APP包名)
desired_caps['appPackage']='com.android.settings'
# 要启动的APP的页面地址
desired_caps['appActivity']='.Settings'#远程调用手机,command_executor调用的地址(从appium服务器获得),desired_capabilities字典
driver=webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)time.sleep(5)driver.close_app()#关闭app
driver.quit()#释放资源
appium server中内容片段:
appium基本操作
# 基础操作API
driver.close_app()# 关闭应用
driver.quit()# 断开链接
driver.install_app("apk在电脑的绝对路径")# 安装应用
driver.remove_app("应用包名")# 卸载应用
driver.is_app_installed()# 判断应用是否安装
driver.push_file()# 目标位置,base64编码内容
driver.pull_file()# 来源位置,返回值是base64编码内容
driver.page_source# 获取界面XML源码
driver.find_element()#定位元素
driver.find_elements()#定位元素
driver.current_package# 获取当前操作的应用的包名
driver.current_activity# 获取当期操作的界面的名称
driver.find_element().text# 获取元素文本内容
driver.find_element().click()# 点击元素对应位置
driver.find_element().get_attribute()# (属性名称)获取属性值
driver.find_element().location# 获取元素左上角的坐标(相对于屏幕的左上角)
driver.find_element().size# 获取元素的宽高(字典)
driver.find_element().send_keys()# 输入文本
通过AndroidSDK中tools里的uiautomatorviewer.bat(没有这个bat工具的话去上面下载sdk的链接中下载tools压缩包解压复制进去就可以了)获取元素进行操作
通过detail信息进行元素定位