一、环境搭建
1.1 Java环境
1.2 AndroidSDK 环境
1.3 Android模拟器安装
记住不要点击虚拟机上面界面中的【启动】按钮
点击 【NO】之后关闭重启即可
这种情况只需要关闭Genymotion重启即可。
1.4 为虚拟手机设备提供安装apk功能
二、adb调试工具
2.1 adb 工作原理
2.2 adb获取包名和界面名
mac命令:adb shell dumpsys window windows | grep mFocusedApp
windows命令:adb shell dumpsys window windows | findstr mFocusedApp
2.3 adb 文件传输
2.4 adb 获取app启动时间
adb shell am start -W 包名/界面名
2.5 adb 获取手机日志
2.6 adb其他命令
三、appium
3.1 appium的安装
使用pip list验证下appium-python-client是否安装成功
3.2 应用程序启动参数
# 导入模块 from appium import webdriver from time import sleep # 设置appium服务器的连接http地址 appium_server = "http://127.0.0.1:4723/wd/hub" # 定义一个字典,存储应用程序的启动参数 desired_caps = dict() # 需要连接的手机的系统类型,不限制大小写,值只能是iOS 和 Android desired_caps['platformName'] = 'Android' # 需要连接的手机的系统版本号,如5.2.1 可以写为5.2.1 或 5.2 或 5 desired_caps['platformVersion'] = '5.1' # 需要连接的手机的设备号,安卓手机的这个值可以随便写,但是必须有值,不能是空 desired_caps['deviceName'] = '192.168.56.101:5555' # 需要启动的应用程序的包名 desired_caps['appPackage'] = 'com.android.settings' # 需要启动的应用程序的界面名 desired_caps['appActivity'] = '.Settings' # 连接appium服务器,创建驱动对象driver driver = webdriver.Remote(appium_server, desired_caps) sleep(10) # 退出 driver.quit()
3.3 appium基础操作
3.3.1 启动其他的app
场景:在一个应用里面需要跳转到另外一个应用,如在购物app内需要调整到支付app
# 脚本内启动其他app
# 使用方法
driver.start_activity(appPackage, appActivity)
# appPackage 要打开的app的包名
# appActivity 要打开的app的界面名
# 导入模块
from appium import webdriver
from time import sleep
# 设置appium服务器的连接http地址
appium_server = "http://127.0.0.1:4723/wd/hub"
# 定义一个字典,存储应用程序的启动参数
desired_caps = dict()
# 1- 手机的参数
# 需要连接的手机的系统类型,不限制大小写,值只能是iOS 和 Android
desired_caps['platformName'] = 'Android'
# 需要连接的手机的系统版本号,如5.2.1 可以写为5.2.1 或 5.2 或 5
desired_caps['platformVersion'] = '5.1'
# 需要连接的手机的设备号,安卓手机的这个值可以随便写,但是必须有值,不能是空
desired_caps['deviceName'] = '192.168.56.101:5555'
# 2- app的参数
# 需要启动的应用程序的包名
desired_caps['appPackage'] = 'com.android.settings'
# 需要启动的应用程序的界面名
desired_caps['appActivity'] = '.Settings'
# 连接appium服务器,创建driver对象
driver = webdriver.Remote(appium_server, desired_caps)
sleep(10)
# 切换到短信app
# com.android.mms/.ui.ConversationList
driver.start_activity("com.android.mms", ".ui.ConversationList")
sleep(10)
# 退出
driver.quit()
3.3.2 获取app的包名和界面名
应用场景:
当从一个app跳转到另外一个app时,想要输出app的包名和界面名
# 获取app的包名
driver.current_package
# 获取app的界面名
driver.current_activity
# 导入模块
from appium import webdriver
from time import sleep
# 设置appium服务器的连接http地址
appium_server = "http://127.0.0.1:4723/wd/hub"
# 定义一个字典,存储应用程序的启动参数
desired_caps = dict()
# 1- 手机的参数
# 需要连接的手机的系统类型,不限制大小写,值只能是iOS 和 Android
desired_caps['platformName'] = 'Android'
# 需要连接的手机的系统版本号,如5.2.1 可以写为5.2.1 或 5.2 或 5
desired_caps['platformVersion'] = '5.1'
# 需要连接的手机的设备号,安卓手机的这个值可以随便写,但是必须有值,不能是空
desired_caps['deviceName'] = '192.168.56.101:5555'
# 2- app的参数
# 需要启动的应用程序的包名
desired_caps['appPackage'] = 'com.android.settings'
# 需要启动的应用程序的界面名
desired_caps['appActivity'] = '.Settings'
# 连接appium服务器,创建driver对象
driver = webdriver.Remote(appium_server, desired_caps)
print("app的包名:", driver.current_package)
print("app的界面名:", driver.current_activity)
# app的包名: com.android.settings
# app的界面名: .