以下内容涉及的系统环境(已安装好): macOS 版本11.8,JDK 1.8,Xcode(Version 13.0) , Appium(App Version: 1.22.0 Electron: 7.3.3 Node.js: 12.8.1)
------ iOS ------
其中:
Xcode 从 App Store 中安装即可
appium-desktop 链接: https://pan.baidu.com/s/1JLbs75kbPDC8D-u3UOtCXA 提取码: 7m9j
1.WebDriverAgent安装、编译和appium使用。
其中提及的 Development Team 配置建议找公司的开发人员设置下,注意 deployment target 的版本号和目标手机的iOS系统版本号一致。
参考:
https://blog.csdn.net/qq_41030861/article/details/110528139
连接
调试代码
from appium import webdriver from time import sleep desired_caps = {} # 平台类型 desired_caps["platformName"] = "iOS" # 手机操作系统的版本 desired_caps["platformVersion"] = "12.3" # 设备名称 desired_caps["deviceName"] = "iPhone X" # 被测应用的 bundle ID 。 # 用于在真实设备中启动测试,也用于使用其他需要 bundle ID 的关键字启动测试。在使用 bundle ID 在真实设备上执行测试时,你可以不提供 app 关键字,但你必须提供 udid 。 desired_caps["bundleId"] = "找开发人员要一下" # 连接的真实设备的唯一设备编号,获取方式https://www.jianshu.com/p/c44d5c3424be desired_caps["udid"] = "自己的设备编号" #在当前 session 下不会重置应用的状态,默认值为 false desired_caps["noReset"] = True # 连接 appium server # 前提:appium desktop 要启动,有监听端口;将 desired_caps 发送给 appium server 打开app driver = webdriver.Remote('http://127.0.0.1:4727/wd/hub', desired_caps)
2.iOS,APP上的元素定位。
WEditor 工具
1)终端中输入 pip install weditor 安装weditor
2)启动weditor,执行python -m weditor
3)连接手机,输入 ip地址,点击connect ,出现小麦穗,点击Dump Hierarchy
我的电脑上发现此工具对于 iOS 里的 APP 定位框有些问题(Android 没问题),见下图,所以我采用了另一个工具来定位 iOS 里的 APP上的元素
Macaca App Inspector 工具
1)安装
参考:
https://macacajs.github.io/guide/environment-setup.html#ios-real-device
2)启动
查看iOS udid: idevice_id -l
终端中执行:app-inspector -u DEVICE-ID (上一步获取的设备ID号)
等待自动打开浏览器窗口,打开后如下图所示,建议把浏览器的窗口最大化,否则可能会出现页面展示不完整问题
------ Android ------
参考:
https://blog.csdn.net/hsh881025/article/details/108211914
https://www.freesion.com/article/1958603787/
调试代码
from appium import webdriver from appium.webdriver.common.mobileby import MobileBy from time import sleep desired_caps = {} # 平台类型 desired_caps["platformName"] = "Android" # 手机操作系统的版本 desired_caps["platformVersion"] = "6.0" # 设备名称 desired_caps["deviceName"] = "Android Emulator" # app包名 desired_caps["appPackage"] = "APP包名" # app入口activity desired_caps["appActivity"] = "app入口activity" #在当前 session 下不会重置应用的状态,默认值为 false desired_caps["noReset"] = True # 连接 appium server # 前提:appium desktop 要启动,有监听端口;将 desired_caps 发送给 appium server 打开app driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
其他:
1)连接夜神模拟器 adb connect 127.0.0.1:62001
2)查看包名和运行的 activity,使用 adb 命令查看,如下:
adb shell "dumpsys window | grep mCurrentFocus"
3)获取应用包名和入口的 activity
aapt dump badging 包的路径
4)列出所有包名
adb shell pm list package
5)微信小程序,微信/qq有很多的进程,我们要确定当前web页面是位于哪个进程中
adb shell dumpsys activity top | grep ACTIVITY
adb shell ps pid号
6)启动 Appium 自带的元素定位工具 UI Automation Viewer(个人不推荐使用)
进入所在目录,我的是:cd /Users/用户名/Library/Android/sdk/android-sdk-macosx/tools
启动 ./uiautomatorviewer
7)重要,运行用例遇到 Appium 报错时尝试执行以下命令,然后再重新运行用例
python -m uiautomator2 init