APP 自动化相关

以下内容涉及的系统环境(已安装好): 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

A wise man thinks all that he says, a fool says all that he thinks.
原文地址:https://www.cnblogs.com/BernieChen/p/15479530.html