Appium + ios环境搭建过程Mac

前提:

已经搭建好Node+Java+Python+Appium...环境

见下面的文章:

ok的话按照下面的步骤搭建IOs的自动化

1. 安装Xcode

2. 依赖工具

工具名 描述
libimobiledevice 2 跨平台的软件协议库和工具,用来支持 iphone 等苹果设备的协议
ideviceinstaller 命令行工具,用于管理 iOS 设备上应用程序的安装、卸载、升级等,也可以查看 app 相关的信息
Carthage 是一个 iOS 项目依赖管理工具,可以很方便的管理三方依赖,WDA 使用这个工具管理项目依赖
ios-deploy 终端安装和调试 iPhone 应用的第三方开源库
ios-webkit-debug-proxy 通过 websocket 连接代理来自 usbmuxd 守护进程的请求,允许开发人员在真实和模拟的 iOS 设备上向 MobileSafari 和 UIWebViews 发送命令,appium 依赖此工具进行 webview 控件的操作

3. 依赖安装

# libimobiledevice 是一个跨平台的软件库,可以管理已安装应用,获取通讯录、日程、备注和书签等信息
brew install --HEAD libimobiledevice
# ideviceinstaller 是一个命令行工具,主要用于管理iOS设备上应用程序的安装与卸载,以及查看相关信息
brew install ideviceinstaller
# WDA 依赖
brew install carthage
# 是一个终端安装和调试iPhone应用的第三方开源库
brew install ios-deploy
# 又名 iwdp,通过websocket连接代理来自usbmuxd守护进程的请求,允许开发人员在真实和模拟的iOS设备上向MobileSafari和UIWebViews发送命令,appium 依赖此工具进行webview控件的操作
brew install ios-webkit-debug-proxy
3.1 检查环境
npm install appium-doctor -g
appium-doctor --ios//检测ios环境是否安装成功

全是✅说明环境ok了,没有的话缺啥装啥

4. WebDriverAgent配置

1. 进入appium安装路径
cd  /Users/[appleuser]/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent/

2. 进入图形化页面
open .

2. 进入目录,点击运行WebDriverAgent.xcodeproj
可以命令行先进入WebDriverAgent路径下
手动点击打开
  1. 配置Xcode

注意Xcode与Mac的版本以及真机IOS的版本要对应

Xcode选好链接成功 的真机

5.1 登录自己的Team,这里个人直接appid

5.2 应用名称写唯一的

5.3 执行

下面这个页面

Command+R执行没有问题

再Command+U运行出现

并且手机装了WebDriverAgent就说明成功了。

执行出错:

Unable to launch com.yiyitech.powerex12333.xctrunner

点击Detail,显示:

Failure Reason: Unable to launch com.yiyitech.powerex12333.xctrunner
 because it has an invalid code signature, 
inadequate entitlements or its profile has 
not been explicitly trusted by the user.

解决:

真机设备上,确保你已经信任了开发者证书。在 "设置" 应用中,转到 "通用" > "设备管理",选择你的开发者证书,然后点击 "信任"。

5. Appium Inspector访问

5.1 如果浏览器打开下面的链接访问

Appium Inspector by Appium Pro

需要启动的时候允许跨域,

appium --allow-cors
5.2 如果Appium客户端访问直接请求
appium

同时需要在

Desired Capabilities添加udid

查看udid办法:

要获取 iOS 设备的 UDID(Unique Device Identifier),你可以使用以下方法之一:

方法1. 通过 iTunes:

连接你的 iOS 设备到电脑,并打开 iTunes。
在 iTunes 中,选择你的设备。
在设备的概要页面中,你将看到设备的序列号。
点击序列号旁边的文本,直到出现 UDID。你可以右键点击 UDID 并选择 "复制"。
通过 Xcode:

方法2. 连接你的 iOS 设备到电脑,并打开 Xcode。
在 Xcode 中,选择 "Window" > "Devices and Simulators"。
在 "Devices and Simulators" 窗口中,选择你的 iOS 设备。
你将看到设备的一些信息,包括 UDID。
通过命令行:

方法3. 打开终端。
运行以下命令,查看连接到电脑的所有 iOS 设备的 UDID:
bash
Copy code
xcrun instruments -s devices
在输出中,你将看到每个设备的 UDID。

start session出现下面的报错:

Could not proxy command to the remote server. Original error: socket hang up

需要加:

最后的Desired Capabilities

java 复制代码
{
  "platformName": "iOS",
  "appium:platformVersion": "14.4",
  "appium:deviceName": "iPhone",
  "appium:automationName": "XCUITest",
  "appium:bundleId": "com.xxx.xxx",
  "appium:udid": "00008101-xxxx",
  "appium:xcodeSigningId": "iPhone Developer",
  "usePrebuildWDA": true,
  "newCommandTimeout": "300"
}

出现下面的报错:

Calling AppiumDriver.getPageSource() with args: ["7557ac30-6dc9-4660-8ea3-cf5e537fe741"]

[XCUITestDriver@fd79 (7557ac30)] Executing command 'getPageSource'

[XCUITestDriver@fd79 (7557ac30)] Matched '/source?format=xml&scope=AppiumAUT' to command name 'getPageSource'

[XCUITestDriver@fd79 (7557ac30)] Proxying [GET /source?format=xml&scope=AppiumAUT] to [GET http://127.0.0.1:8100/session/C380BAF2-8151-4092-AADE-F50C0AE58DAA/source?format=xml\&scope=AppiumAUT\] with no body

原因是超时了,Appium Inspector加载资源特别慢,可能需要10+分钟,设置超时等待时间

  "newCommandTimeout": "300"

5.3 如果想要使用weditor抓包工具

出现设备信息及说明正常了

6. 声明Driver

java 复制代码
            //appium serve
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("platformName","iOS");
            capabilities.setCapability("platformVersion", "14.4");
            capabilities.setCapability("deviceName", "iPhone");
            capabilities.setCapability("automationName","XCUITest");
            capabilities.setCapability("bundleId","com.xxx.xxxx");
            capabilities.setCapability("udid","00008101-xxxxx");
            capabilities.setCapability("xcodeSigningId","iPhone Developer");
            capabilities.setCapability("usePrebuildWDA",true);
            capabilities.setCapability("includeSafariInWebviews",true);
            capabilities.setCapability("connectHardwareKeyboard",true);
            capabilities.setCapability("newCommandTimeout", "300");
            capabilities.setCapability(MobileCapabilityType.NO_RESET, true);
            capabilities.setCapability(MobileCapabilityType.PRINT_PAGE_SOURCE_ON_FIND_FAILURE, true);
            capabilities.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 300000);
            capabilities.setCapability(SupportsAutoGrantPermissionsOption.AUTO_GRANT_PERMISSIONS_OPTION, true);

try {
                //1、打开app操作
                iosDriver = new IOSDriver(new URL("http://0.0.0.0:4723"),capabilities);
                //隐式等待
                iosDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20));
            } catch (MalformedURLException e) {
                throw new RuntimeException(e);
            }

常用命令总结

1. 查看设备连接
idevice_id -l

2. 真机安装应用
ideviceinstaller --install </path/to/file/xxx.app>
ideviceinstaller -i </path/to/file/xxx.app>

3. 真机卸载应用
ideviceinstaller --uninstall <appid>
ideviceinstaller -U <appid>

4. 真机查看应用的 bundleid 
ideviceinstaller -l
相关推荐
五阿哥爱跳舞9 小时前
MAC备忘录空白解决方案
macos
乌恩大侠11 小时前
【Xcode Command Line Tools】安装指南
macos·fpga开发·c
missmisslulu12 小时前
电容笔值得买吗?2024精选盘点推荐五大惊艳平替电容笔!
学习·ios·电脑·平板
GEEKVIP13 小时前
手机使用技巧:8 个 Android 锁屏移除工具 [解锁 Android]
android·macos·ios·智能手机·电脑·手机·iphone
GEEKVIP13 小时前
如何在 Windows 10 上恢复未保存/删除的 Word 文档
macos·ios·智能手机·电脑·word·笔记本电脑·iphone
奇客软件14 小时前
iPhone使用技巧:如何恢复变砖的 iPhone 或 iPad
数码相机·macos·ios·电脑·笔记本电脑·iphone·ipad
前端张三15 小时前
Mac 电脑pink 后端ip地址进行本地联调
服务器·tcp/ip·macos
缘友一世21 小时前
macos安装mongodb
数据库·mongodb·macos
笑非不退1 天前
macOS开发环境配置与应用开发
macos
colorknight1 天前
1.2.3 HuggingFists安装说明-MacOS安装
人工智能·低代码·macos·huggingface·数据科学·ai agent