adb命令
连接模拟器 adb connect 127.0.0.1:16384 adb start-server 查看当前设备 adb devices 获取当前界面元素 adb shell dumpsys activity top 查看日志 adb logcat | grep -i displayed 启动应用 adb shell am start -W -n Activity名字 获取当前页面的activity abd shell dumpsys window|grep mCurrent
Capability设置
普通用法
deviceName 是随便起名的 不能指定设备
from appium import webdriver class TestKj: def setup(self): desired_cap = { "platformName": "android", "deviceName": "127.0.0.1:16384", "appPackage": "com.xueqiu.android", "appActivity": ".view.WelcomeActivityAlias", "noReset": True, #防止清空缓存信息,这个参数解决的问题:每次一点软件就弹出一个更新的弹框,设置了这个参数以后,再次运行,弹窗出现给他点关闭,下次运行就不会再弹出弹窗了,同样适用于解决登录问题 "skipDeviceInitialization": True, #跳过安装、权限设置等操作,可以提升运行速度 "dontStopAppOnReset": True, # ↑ 在停留的页面上继续操作,不会重启app # 要输入中文需要设置以下这两个参数: "unicodeKeyBoard": True, "resetKeyBoard": True #"udid" 连接的真实设备的唯一设备编号 } self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_cap) self.driver.implicitly_wait(8) def teardown(self): self.driver.quit() # 返回到上一个页面: driver.back()
高级用法
在当前页面不退出,继续执行:
appium 元素定位
id
self.driver.find_element_by_id(resource-id)
accessibility_id
self.driver.find_element_by_accessibility_id(content-desc)
xpath定位
self.driver.find_element_by_xpath(xpath属性值)
classname定位(不推荐)
uiautomator定位
优点:
xpath定位速度慢
uiautomator是android的工作引擎,速度快
缺点:
表达式书写复杂,容易写错IDE没有提示
三种等待
定位工具
uiautomatorviewer
cmd直接输入:uiautomatorviewer
uiautomator对不同设备可能渲染出来的结果不一致,对兼容性测试来说这些脚本就不适用了,所以推荐使用谷歌的inspect