Appium + ios环境搭建过程Mac

前提:

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

见下面的文章:

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

1. 安装Xcode

  • 官方下载 (Downloads and Resources - Xcode - Apple Developer 1)
  • AppStore 下载安装最新版本

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路径下
手动点击打开

5. 配置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

{
  "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抓包工具

  •         先安装weditor
  • 设置监听端口
    • iproxy 8200 8100

      访问:http://localhost:8200/status

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

6. 声明Driver

            //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);
            }

7. 

常用命令总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/308371.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot的配置文件详解:从入门到精通,解读配置文件的奇妙世界

目录 1、前言 2、介绍 2.1 Springboot配置文件的作用 2.2 Springboot支持的配置文件类型 2.3 Springboot配置文件的加载顺序 3、YAML配置文件 3.1 YAML基本语法介绍 3.2 YAML中的基本数据类型 3.3 YAML中的复合数据类型 3.4 YAML中的配置属性 3.5 YAML中的多环境配置…

从0开始学Git指令(2)

从0开始学Git指令 因为网上的git文章优劣难评&#xff0c;大部分没有实操展示&#xff0c;所以打算自己从头整理一份完整的git实战教程&#xff0c;希望对大家能够起到帮助&#xff01; 工作区&#xff08;Working Directory&#xff09; 就是你在电脑里能看到的目录&#x…

还不会python 实现常用的数据编码和对称加密?看这篇文章就够啦~

相信很多使用 python 的小伙伴在工作中都遇到过&#xff0c;对数据进行相关编码或加密的需求&#xff0c;今天这篇文章主要给大家介绍对于一些常用的数据编码和数据加密的方式&#xff0c;如何使用 python 去实现。话不多说&#xff0c;接下来直接进入主题&#xff1a; 前言 1…

Windows VSCode 使用Python

一、vscode中安装python 二、下载python.exe&#xff08;即vscode中需要的python解释器&#xff09; 下载地址&#xff1a;https://www.python.org/downloads/ 三、安装第三方代码规范工具 参考网址&#xff1a;https://www.python.org/downloads/ 工具介绍 flake8 &#xf…

文心一言API调用,保姆级案例分享

分享一个调用文心一言API的案例。今天自己用程序去过去文心一言模型中获取结果。 文心一言API调用如何收费&#xff1f; 官方给送了20块钱的体验券&#xff01; 后续收费规则如下 如何开通所需要要的 API key 和 Secret key&#xff1f; api调用需要先在千帆平台开通API key 。…

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning

随着预训练模型的参数越来越大&#xff0c;尤其是175B参数大小的GPT3发布以来&#xff0c;让很多中小公司和个人研究员对于大模型的全量微调望而却步&#xff0c;近年来研究者们提出了各种各样的参数高效迁移学习方法&#xff08;Parameter-efficient Transfer Learning&#x…

TurboDesign安装包及安装教程

下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1I_jMid-z186GgvyH3ZExGQ 提取码&#xff1a;z936 1.解压下载好的压缩包。 2.进入解压后的文件夹并点击进入“ADT TURBODesign Suite 6.4.0”。 3.点击“安装包”进入文件夹。 4.找到“setup.exe”并右键点…

Docker入门介绍

【一】从 dotCloud 到 Docker——低调奢华有内涵 1、追根溯源:dotCloud 时间倒回到两年前&#xff0c;有一个名不见经传的小公司&#xff0c;他的名字叫做:dotCloud。 dotCloud 公司主要提供的是基于 PaaS(Platform as a Service&#xff0c;平台及服务) 平台为开发者或开发商…

训练自己的GPT2

训练自己的GPT2 1.预训练与微调2.准备工作2.在自己的数据上进行微调 1.预训练与微调 所谓的预训练&#xff0c;就是在海量的通用数据上训练大模型。比如&#xff0c;我把全世界所有的网页上的文本内容都整理出来&#xff0c;把全人类所有的书籍、论文都整理出来&#xff0c;然…

从零学Java 集合概述

Java 集合概述 文章目录 Java 集合概述1 什么是集合?2 Collection体系集合2.1 Collection父接口2.1.1 常用方法2.1.2 Iterator 接口 1 什么是集合? 概念&#xff1a;对象的容器&#xff0c;定义了对多个对象进行操作的常用方法&#xff1b;可实现数组的功能。 和数组区别&…

中小企业实施了MES系统后,同样具备大企业的生产能力

工业4.0、智能制造是当前制造业最热门的话题。数字化工厂是实现智能制造的基础&#xff0c;在建设数字化工厂的过程中&#xff0c;MES系统是核心也是最重要的一环。万界星空MES系统是企业信息数据集成的纽带&#xff0c;可帮助企业实现监控与实际生产过程的同步化&#xff0c;全…

基于JavaWeb+BS架构+SpringBoot+Vue校车调度管理系统的设计和实现

基于JavaWebBS架构SpringBootVue校车调度管理系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 摘 要 1 Abstract 1 目 录 2 1 绪 论 1 1.1研究背景 1 1.2 研究意义 1 1.…

软件测试|Python openpyxl库使用指南

简介 我们之前介绍过&#xff0c;python在自动化办公方面可以大放异彩&#xff0c;因为Python有许多的第三方库&#xff0c;其中有很多库就支持我们对office软件进行操作&#xff0c;熟练的使用Python对office进行操作&#xff0c;可以实现自动化办公&#xff0c;极大提升我们…

【博士每天一篇论文-算法】Optimal modularity and memory capacity of neural reservoirs

阅读时间&#xff1a;2023-11-15 1 介绍 年份&#xff1a;2019 作者&#xff1a;Nathaniel Rodriguez 印第安纳大学信息学、计算和工程学院&#xff0c;美国印第安纳州布卢明顿 期刊&#xff1a; Network Neuroscience 引用量&#xff1a;39 这篇论文主要研究了神经网络的模块…

WEB 3D技术 three.js 光照与阴影

本文 我们来说 灯光与阴影 之前 我们有接触到光照类的知识 但是阴影应该都是第一次接触 那么 我们先来看光 首先是 AmbientLight 环境光 你在官网中搜索 AmbientLight 官方是就写明了 环境光是不会产生阴影的 因为 它没有反向 然后是 DirectionalLight 平行光 它是可以投射阴…

Java建筑工程建设智慧工地源码

智慧工地管理平台依托物联网、互联网&#xff0c;建立云端大数据管理平台&#xff0c;形成“端云大数据”的业务体系和新的管理模式&#xff0c;从施工现场源头抓起&#xff0c;最大程度的收集人员、安全、环境、材料等关键业务数据&#xff0c;打通从一线操作与远程监管的数据…

代理IP连接不上/网速过慢?如何应对?

当您使用代理时&#xff0c;您可能会遇到不同的代理错误代码显示代理IP连不通、访问失败、网速过慢等种种问题。 在本文中中&#xff0c;我们将讨论您在使用代理IP时可能遇到的常见错误、发生这些错误的原因以及解决方法。 一、常见代理服务器错误 当您尝试访问网站时&#…

MySQL 存储引擎全攻略:选择最适合你的数据库引擎

1. MySQL的支持的存储引擎有哪些 官方文档给出的有以下几种&#xff1a; 我们也可以通过SHOW ENGINES命令来查看&#xff1a; 还可以通过ENGINES表查看 2. 存储引擎比较 我们通过存储引擎表来看各自的优点&#xff1a; InnoDB 默认的存储引擎&#xff08;SUPPORT字段为D…

LeetCode 36 有效的数独

题目描述 有效的数独 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考…

[openGL]在ubuntu20.06上搭建openGL环境

就在刚刚, 我跑上了一个6小时后出结果的测试程序. 离下班还有很久, 于是我打开了接单群 , 发现了很多可以写的openGL项目. 但是!!我的电脑现在是ubuntu呀, 但是不要慌!!!接下来我一步一步教你如何完美搭建一个ubuntu上的openGL环境. 保证一个坑也不会踩! 文章目录 创建项目工作…