环境介绍
- 模拟器
- 模拟真机和android操作系统
- adb
- 谷歌公司提供的安卓系统调试工具
- appium
- Appium-Python-Client
adb常用命令
adb devices
- 显示或者连接到android系统
adb devices
* daemon not running; starting Now at tcp:5037
* daemon started successfully
List of devices attached
emulator-5554 offline
# 检测到了一个设备, offline离线(设备存在, 但并没有连接到adb),
# 解决办法, 再次运行adb devices
List of devices attached
emulator-5554 device
# 显示device,代表连接设备成功
获取app的包名和界面名
adb shell dumpsys window windows | findstr mFocusedApp
- 查看tpshopApp的包名和界面名
第一步: 在安卓中启动app
第二步: 在windows的cmd中执行如下命令:
adb shell dumpsys window windows | findstr mFocusedApp
mFocusedApp=AppWindowToken{5c9352d token=Token{c2ef044 ActivityRecord{aaedd57 u0 com.tpshop.malls/.SPMainActivity t5
- 包名com.tpshop.malls
- 界面名.SPMainActivity
安卓文件与windows的同步
adb pull
- 把安卓中的文件, 下载的windows
adb pull 安卓的文件路径文件名 windows的文件存放路径
adb pull /default.prop c:\file
# 把安卓根目录下的文件default.prop, 下载到windows的c盘file目录里
adb pull /lib/libz.so c:\file
# 把安卓根目录的lib目录下的文件libz.so, 下载到windows的c盘file目录里
adb push
adb push windows的文件路径 安卓的文件位置
adb push c:\file\a.txt /sdcard
# 把windos上的c盘file目录下的a.txt上传到安卓的根目录的sdcard里
adb启动指定的app
adb shell am start -W 包名/界面名
adb shell am start -W com.tpshop.malls/.SPMainActivity # 启动tpshop
Status: ok
Activity: com.tpshop.malls/.SPMainActivity
ThisTime: 3662 # 界面启动需要的时间
TotalTime: 3662 # 包启动需要的时间
WaitTime: 3786 # 安卓为启动app需要的时间
Complete # 完成
查看安卓系统日志
- adb logcat
adb安装和卸载app
- adb install apk文件所在的路径
adb install c:\file\tn3180.apk # 安装c盘file目录里的tn3180.apk这个安装文件
- adb uninstall 包名
adb uninstall com.tencent.news # 把包com.tencent.news卸载
重启adb服务
- adb kill-server 关闭服务
- adb start-server 启动服务
adb后台有个服务进程, 有时候这个进程会工作出问题, 通过以上两个命令, 可以重启adb的服务
查看adb帮助
- adb --help
基础操作
入门代码
from appium import webdriver
import time
dict1 = {"platformName":"Android",
"platformVersion":"7.1",
"deviceName":"127.0.0.1:5555", # 随便填一个值, 但不能空
"unicodeKeyboard":True, # 中文支持
"resetKeyboard":True, # 中文支持
"appPackage":"com.android.settings", # 启动的包名
"appActivity":".Settings" # 界面名
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", dict1)
driver.find_element_by_id("dashboard_tile").click()
time.sleep(5)
driver.quit()
启动指定包和界面
- driver.start_activity(包名, 界面名)
# 打开通讯录
driver.start_activity("com.android.contacts", ".activities.PeopleActivity")
获取包名和界面名
- driver.current_package # 包名
- driver.current_activity # 界面名
print(driver.current_package)
print(driver.current_activity)
关闭驱动和app
- 关闭app后驱动对象还可以继续控制
driver.close_app()
安装和卸载app
- 判断是否安装指定app
- driver.is_app_installed("包名")
- 安装app
- driver.install_app(r"apk文件路径")
- 卸载app
- driver.remove_app("包名")
if driver.is_app_installed("com.tencent.news"):
driver.remove_app("com.tencent.news") # 如果已经安装腾讯新闻, 卸载
else:
driver.install_app(r"C:\app\TencentNews_3180.apk") # 如果没有安装腾讯新闻, 安装
应用置于后台
- driver.background_app(秒数)
driver.background_app(3)
定位元素
定位单个元素
- id定位
- driver.find_element_by_id(resource-id属性值)
- class定位
- driver.find_element_by_class_name(class属性值)
- name定位
- driver.find_element_by_accessibility_id(content-desc属性)
- 当定位到多个符合条件的元素时,默认返回第一个
定位多个元素
- 定位一组元素时, 返回数据类型为列表
# 1.点击系统设置中的WLAN
# 2.点击WLAN中的开关按钮
from appium import webdriver
import time
dict1 = {"platformName":"Android",
"platformVersion":"7.1",
"deviceName":"127.0.0.1:5555", # 随便填一个值, 但不能空
"unicodeKeyboard":True, # 中文支持
"resetKeyboard":True, # 中文支持
"appPackage":"com.android.settings",
"appActivity":".Settings"}
driver = webdriver.Remote("http://localhost:4723/wd/hub", dict1)
driver.find_element_by_id("dashboard_tile").click()
time.sleep(2)
driver.find_element_by_id("switch_widget").click() # 点击WLAN开关
# 如果有多个id为"dashboard_tile"的元素, 点击第二个
# driver.find_elements_by_id("dashboard_tile")[1].click()
time.sleep(5)
driver.quit()
总结
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。