当前位置: 首页 > news >正文

Mac安装Appium

  • 一、环境依赖
    • 一、JDK环境
    • 二、Android-SDK环境(android自动化)
    • 三、Homebrew环境
    • 四、Nodejs
      • 安装cnpm
    • 五、安装appium
    • 六、安装appium-doctor来确认安装环境是否完成
    • 七、安装相关依赖
  • 二、重头大戏, 配置wda(WebDriverAgent)
  • 三、第二个重头大戏,配置UI查看器
    • 一、因为appium自身的查看器,打开非常缓慢,所以需要更换成macaca来进行元素定位
      • 1、安装Node(跳过,已安装)
      • 2、安装macaca
      • 3、安装 ideviceinstaller
      • 4、安装usbmuxd
      • 5、安装ios驱动
      • 6、安装App Inspector
    • 二、安装XCTestWD,进行界面交互
      • 1、进入App Inspector安装目录下XCTestWD文件夹,具体路径参照自己的路径,可以通过find命令查找。
      • 2、用xcode打开XCTestWD.xcodeproj文件 
      • 3、每个文件修改添加Team(账号)
      • 4、项目文件直接编译,test结尾的文件build for Testing。编译成功即可
    • 三、将 TEAM_ID 通过环境变量传入覆盖安装App Inspector、iOS驱动
      • 1、获取你的TEAM_ID ,见下图
      • 2、覆盖安装iOS驱动,连接手机,命令行下面
      • 3 、覆盖安装App Inspector
    • 四、使用App Inspector
      • 0、获取测试机uuid
      • 1、使用AppInspector执行以下命令:
      • 2、chrome浏览器自动打开地址:http://192.168.21.101:5678/ (推荐用 Chrome 浏览器)
  • 测试DEMO:
  • 问题汇总:

一、环境依赖

  • Node.js
  • Appium
  • Appium-desktop
  • Appium-doctor
  • Appium-Python-Client
  • Python
  • JDK
  • Android SDK
  • Xcode Version 11.2 (11B52)

一、JDK环境

在.bash_profile 或.zshrc文件中设置JAVA,若没有则touch .bash_profile 新建一个

export JAVAHOME=$(/usr/libexec/javahome)

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=$JAVAHOME/lib

验证:

java -version

0


二、Android-SDK环境(android自动化)

在.bash_profile 或.zshrc文件中设置Android环境变量

export ANDROID_HOME=~/Library/Android/sdk

export PATH="$HOME/.yarn/bin:$PATH"

环境立即生效:

source ~/.bash_profile

验证:

adb version

0


三、Homebrew环境

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

验证:

brew -v

0

brew update

备注:https://www.cnblogs.com/wxhou/p/14174468.html


四、Nodejs

安装:brew install node

检查是否安装成功:

node -v

# v6.9.1

npm -v

# 3.10.8

0

安装cnpm

由于npm源在国外,我们使用npm安装库时会比较慢,可以使用taobao的镜像源

npm install -g cnpm --registry=https://registry.npm.taobao.org

检查安装是否成功

cnpm -v

# 4.4.0

0


五、安装appium

Release v1.15.1 · appium/appium-desktop · GitHub

下载安装最新dmg包,目前是1.15.1


六、安装appium-doctor来确认安装环境是否完成

cnpm install -g appium-doctor


七、安装相关依赖

brew install libimobiledevice --HEAD #和iOS手机通讯使用,相当于 android 的 adb,是 Appium 底层用到的工具之一,用于获取 iOS 设备信息

brew install ideviceinstaller # 安装app使用

brew install carthage              # 类似于 java的 maven,项目依赖管理,主要是 WebDriverAgent 使用

cnpm install -g ios-deploy

cnpm install -g ios-deploy # 支持使用命令行管理 iOS 设备 app 的工具查看设备应用

sudo gem install xcpretty 

//cpnm install -g bufferutil@^4.0.1 --save-dev

//cpnm install -g utf-8-validate@^5.0.2 --save-dev

cnpm install -g appium-android-driver

cnpm install -g appium-ios-driver

brew 安装的大致是这些依赖

0

gem install xcpretty #xcpretty是用于对xcodebuild的输出进行格式化。并包含输出report功能

gem 安装速度慢可以更换镜像源

gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/

(/Applications/Appium.app/Contents/Resources/app/node_modules/appium-webdriveragent)

(配置好账号,下载证书///)

(xcode指定版本下载:Sign In - Apple)



二、重头大戏, 配置wda(WebDriverAgent)

  1. 进入到 appium 的WebDriverAgent目录

cd /Applications/Appium.app/Contents/Resources/app/node_modules/appium-webdriveragent

  1. 执行sh

sh ./Scripts/bootstrap.sh

跳过YYCache,RoutingHTTP,解决:重新搞一个webdriveragent,重开窗口。

  1. 打开目录

open . 

  1. 双击 WebDriverAgent.xcodeproj,使用xcode打开工程
  2. 配置账号(账号需要开发配合添加)

Xcode->Preferences...->Accounts,添加账号

  1. 网上很多说要配置bundleID,但是实际上,只需要开发账号。
  2. 配置好账号后,分别设置项目里的WebDriverAgentLib、WebDriverAgentRunner里的Singing&Capabilities中的账号,勾选Automatically Manage signing

0

  1. 配置好后,连接手机
  2. Xcode->Product→Clean Build Folder(清除历史build)
  3. Xcode->Product→bulid
  4. Xcode->Product→Test
  5. 成功后,手机会安装一个没有图标的程序,打开后如果提示添加信任,自行前往手机设置

如果test failds,起不来虚机,可能是xcode问题,重新安装。



三、第二个重头大戏,配置UI查看器

        一、因为appium自身的查看器,打开非常缓慢,所以需要更换成macaca来进行元素定位

                1、安装Node(跳过,已安装)

                2、安装macaca

                        cnpm i -g macaca-cli

报错如下,不知道影响不?

0

                3、安装 ideviceinstaller

                        brew install ideviceinstaller

                4、安装usbmuxd

                        brew install usbmuxd

                5、安装ios驱动

                        cnpm i macaca-ios -g

                        刚上来有一些警告

0

后来有一些红字

0

                6、安装App Inspector

                        npm install app-inspector -g

                        一些警告

0

0

二、安装XCTestWD,进行界面交互

1、进入App Inspector安装目录下XCTestWD文件夹,具体路径参照自己的路径,可以通过find命令查找。

cd /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD

2、用xcode打开XCTestWD.xcodeproj文件 

3、每个文件修改添加Team(账号)

4、项目文件直接编译,test结尾的文件build for Testing。编译成功即可

三、将 TEAM_ID 通过环境变量传入覆盖安装App Inspector、iOS驱动

1、获取你的TEAM_ID ,见下图

2、覆盖安装iOS驱动,连接手机,命令行下面

DEVELOPMENT_TEAM_ID=7Y32L5GA75 cnpm i macaca-ios -g --unsafe-perm=true

0

一些警告:

0

一些警告:

0

3 、覆盖安装App Inspector

DEVELOPMENT_TEAM_ID=7Y32L5GA75 cnpm install app-inspector -g  --unsafe-perm=true

0

一些警告

0

四、使用App Inspector

0、获取测试机uuid

      instruments -s devices

0

1、使用AppInspector执行以下命令:

app-inspector -u 807C76EF-0229-40A9-BDF1-73BF64B502A0

app-inspector -u B03CA745-D8AD-4C43-AC8B-1E3219ACC998

app-inspector -u DEVICE-ID

0

2、chrome浏览器自动打开地址:http://192.168.21.101:5678/ (推荐用 Chrome 浏览器)

0

==================================

问题汇总:

  1. 执行appium-doctor,提示未安装xcode解决方案:

a. 输入命令

 xcode-select -p查看xcode的安装路径

b. 修改xcode安装路径

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

  1. 安装libimobiledevice出现错误

执行以下命令

brew update brew uninstall --ignore-dependencies libimobiledevice brew uninstall --ignore-dependencies usbmuxd brew install --HEAD usbmuxd brew unlink usbmuxd brew link usbmuxd brew install --HEAD libimobiledevice

相关文章:

Mac安装Appium

一、环境依赖 一、JDK环境二、Android-SDK环境(android自动化)三、Homebrew环境四、Nodejs 安装cnpm 五、安装appium六、安装appium-doctor来确认安装环境是否完成七、安装相关依赖 二、重头大戏, 配置wda(WebDriverAgent&#x…...

数据库管理-第153期 Oracle Vector DB AI-05(20240221)

数据库管理153期 2024-02-21 数据库管理-第153期 Oracle Vector DB & AI-05(20240221)1 Oracle Vector的其他特性示例1:示例2 2 简单使用Oracle Vector环境创建包含Vector数据类型的表插入向量数据 总结 数据库管理-第153期 Oracle Vecto…...

通过傅里叶变换进行音频变声变调

文章目录 常见音频变声算法使用Wav库读写音频文件使用pitchShift算法进行音频变调主文件完整代码工程下载地址常见音频变声算法 在游戏或者一些特殊场景下为了提高娱乐性或者保护声音的特征,我们会对音频进行变声变调处理。常用的算法包括: 1.基于傅里叶变换的频域算法,该类…...

Opencv(C++)学习 ARM上引用opencv报相关头文件找不到

简单问题记录,C 与C互相引用时应该多注意类似问题。 问题描述:在项目中,建立了一个interface.h提供了一个C语言兼容的接口void work(),并在对应的interface.cpp中使用OpenCV完成相关处理实现。在PC端测试时,main.cpp成…...

中国服装行业ERP的现状与未来发展

随着全球数字化浪潮的兴起,中国服装行业也在不断探索数字化转型的路径,其中ERP(企业资源计划)系统作为管理和优化企业资源的重要工具,在服装行业中发挥着日益重要的作用。本文将探讨中国服装行业ERP的现状、作用&#…...

Unix与Linux区别

目录 历史和所有权 内核 发行版 开源性质 用户群体 命令行界面 历史和所有权 Unix: Unix是一个操作系统家族的名称,最早由贝尔实验室(Bell Labs)的肖像电机公司(AT&T)开发。最早的Unix版本是在19…...

惠尔顿 网络安全审计系统 任意文件读取漏洞复现

0x01 产品简介 惠尔顿网络安全审计产品致力于满足军工四证、军工保密室建设、国家涉密网络建设的审计要求,规范网络行为,满足国家的规范;支持1-3线路的internet接入、1-3对网桥;含强大的上网行为管理、审计、监控模块&#xff1b…...

Chrome插件(二)—Hello World!

本小节将指导你从头到尾创建一个基本的Chrome插件,你可以认为是chrome插件开发的“hello world”! 以下详细描述了各个步骤: 第一步:设置开发环境 确保你拥有以下工具: 文本编辑器:如Visual Studio Cod…...

DBAPI如何使用数组类型参数

DBAPI如何使用数组类型参数 需求 根据多个id去查询学生信息 API创建 在基本信息标签&#xff0c;创建参数ids &#xff0c;参数类型选择 Array<bigint> 在执行器标签&#xff0c;填写sql&#xff0c;使用in查询 select * from student where id in <foreach ope…...

博途PLC PID仿真(单容水箱液位高度控制含变积分变增益测试)

单容水箱和双荣水箱的微分方程和数值求解,可以参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/131139432https://rxxw-control.blog.csdn.net/article/details/131139432这篇博客我们利用欧拉求解器在PLC里完成单容水箱的数学建模。PLC也可以和MATL…...

第1集《灵峰宗论导读》

《灵峰宗论》导读。诸位法师&#xff0c;诸位同学&#xff0c;阿弥陀佛&#xff01;&#xff08;阿弥陀佛&#xff01;&#xff09; 学人很高兴&#xff0c;这次有一个殊胜的因缘来跟大家共同地学习《灵峰宗论》的课程。《灵峰宗论》是蕅益大师一生当中在佛法的修学心得。在蕅…...

nuxt CSS 存放到独立文件进行SEO优化

nuxt CSS 到独立文件 在Nuxt.js中将CSS样式从单个文件分离为多个独立的文件可以通过使用extract-text-webpack-plugin来完成。 首先&#xff0c;确保已经安装了该插件&#xff1a; npm install extract-text-webpack-plugin --save-dev然后&#xff0c;在项目根目录下创建一个…...

台式电脑电源功率越大越费电吗?装机选购多少W电源

要组装一台电脑&#xff0c;我们首先需要选择硬件。 硬件搭配最关键的一点就是CPU和主板的兼容性。 硬件、电源等之间的平衡都需要仔细考虑。 那么台式电脑电源多大功率合适呢&#xff1f; 下面分享组装电脑电源瓦数选购指南&#xff0c;教您正确选择合适的电源瓦数。 让我们来…...

《TCP/IP详解 卷一》第4章 地址解析协议ARP

目录 4.1 引言 4.2 一个例子 4.3 ARP缓存 4.4 ARP帧格式 4.5 ARP例子 4.6 ARP缓存超时 4.7 代理ARP 4.8 免费ARP和地址冲突检测 4.9 ARP命令 4.10 使用ARP设置嵌入式设备IPv4地址 4.11 与ARP相关攻击 4.12 总结 4.1 引言 地址解析&#xff1a; IPv4&#xff1a;AR…...

如何在pgAdmin中用替换的值更新jsonb列?

我有一个名为files的PostgreSQL表&#xff0c;其中包括一个名为formats的jsonb表。虽然有些行是[null]&#xff0c;但其他行具有此结构的对象&#xff1a; {"thumbnail": {"ext": ".jpg","url": "https://some-url.com/image01.…...

冯诺依曼体系结构 计算机组成的金字塔

01 冯诺依曼体系结构&#xff1a;计算机组成的金字塔 学习计算机组成原理&#xff0c;到底是在学些什么呢&#xff1f;这个事儿&#xff0c;一两句话还真说不清楚。不过没关系&#xff0c;我们先从“装电脑”这个看起来没有什么技术含量的事情说起&#xff0c;来弄清楚计算机到…...

AWS安全组是什么?有什么用?

最近看到小伙伴在问&#xff0c;AWS安全组是什么&#xff1f;有什么用&#xff1f;今天我们大家就来简单聊聊&#xff0c;仅供参考哦&#xff01; AWS安全组是什么&#xff1f;有什么用&#xff1f; 【回答】&#xff1a;AWS安全组是一种虚拟防火墙&#xff0c;用于控制进出…...

SSM项目集成Spring Security 4.X版本 之 加入DWZ,J-UI框架实现登录和主页菜单显示

目录 前言 一、加入DWZ J-UI框架 二、实现登录页面 三、实现主页面菜单显示 前言 大家好&#xff01;写文章之前先列出几篇相关文章。本文内容也在其项目中接续实现。 一. SSM项目集成Spring Security 4.X版本&#xff08;使用spring-security.xml 配置文件方式&#xff…...

【MySQL】如何理解MySQL的锁(图文并茂,一网打尽)

一、锁的介绍 锁是计算机协调多个进程或者线程并发访问某一资源的机制。那么如何保证数据并发访问的一致性、有效性是数据库必须解决的一个问题&#xff0c;锁的冲突也是影响数据库并发访问性能的一个重要因素&#xff0c;所以数据库中锁的应用极为重要&#xff0c;其复杂度也更…...

【设计模式】01-装饰器模式Decorator

作用&#xff1a;在不修改对象外观和功能的情况下添加或者删除对象功能&#xff0c;即给一个对象动态附加职能 装饰器模式主要包含以下角色。 抽象构件&#xff08;Component&#xff09;角色&#xff1a;定义一个抽象接口以规范准备接收附加责任的对象。具体构件&#xff08…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...