Appium+Python实现iOS自动化测试~环境搭建

news2024/11/19 13:19:27

Appium是一款开源的跨平台测试自动化工具,适用于本地,混合和移动网络和桌面应用程序。支持模拟器(iOS、Android)和真实设备(iOS,Android,Windows,Mac)。

准备工具

  • Xcode
  • PyCharm
  • Command Line Tool
  • HomeBrew 、Node 、npm ...

1.安装 Homebrew

Homebrew 是MACOSX的软件管理工具,粗俗点说就是ma界的qq软件助手之类的东西。所以通过brew,安装什么chrome浏览器啊、atom编辑器之类的可视化工具也是可以的。

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

2.安装 Node

  • 1.使用Homebrew下载:
brew install node
  • 2.或者从 官方地址 下载.pkg文件安装

3.安装 npm

npm 是node.js界的程序/模块管理工具,也就是说npm只管理那些服务于JavaScript社区的程序。而且跨平台,只要有node环境,windows和osx,以及其他unix like操作系统都可以使用。如不需要命令行启动Appium可跳过此步骤。

  • 切换淘宝镜像安装cnpm(由于某种原因,直接用npm下载安装会有好多网络问题,安装淘宝的cnpm要比npm好用):
npm install -g cnpm --registry=https://registry.npm.taobao.org

4.安装carthage

类似cocoapods管理第三方代码,自动将工程编译为动态库,仅支持iOS8以上。

brew install carthage

5.安装其他工具

  • libimobiledevice 使用指南
brew install libimobiledevice --HEAD
  • ideviceinstaller 负责给iOS设备安装卸载应用或者备份应用。该工具是基于libmobiledevice的,因此首先要完成libmobiledevice的编译安装
brew install ideviceinstaller
ideviceinstaller不支持iOS10。所以我们还需要安装**ios-deploy**,ios-deploy是一个使用命令行安装iosapp到连接的设备的工具,原理是根据osx命令行工程调用系统底层函数,获取连接的设备、查询/安装/卸载app。
cnpm install -g ios-deploy
  • xcpretty 用于对xcodebuild的输出进行格式化,可以不安装
sudo gem install xcpretty
  • App Inspector 是运行在浏览器端的移动设备 UI 查看器,使用树状态结构查看 UI 布局,并且能自动生成 XPath,方便脚本的编写和生成。
cnpm install app-inspector -g

6.下载Appium-Python-Client

  • 先安装 pip
sudo easy_install pip
  • 再安装 Appium-Python-Client
sudo pip install Appium-Python-Client

7.下载 appium 和appium-doctor

这里有两种安装appium的方式,一种是利用cnpm下载安装:

cnpm install -g appium

cnpm install -g appium-doctor

推荐! 还可以选择下载 Appium-desktop安装包 ,打开Appium-desktop的dmg包,复制Appium.app到Applications文件夹中,即完成安装。

8.配置 appium-xcuitest-driver

appium-xcuitest-driver其中引用Facebook提供的WDA方案来驱动iOS的测试

// !如果WebDriverAgent 所在路径和此不同,请自行查找
cd  /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

// 如果是安装appium-desktop的话,路径为
cd /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

mkdir -p Resources/WebDriverAgent.bundle

sh ./Scripts/bootstrap.sh

该脚本会使用Carthage下载所有的依赖,使用npm打包响应的js文件。

常见报错:Cannot find module ‘eslint-config-appium 加上参数-d即可:

sh ./Scripts/bootstrap.sh -d

运行成功截图如下:

重点来了!!!

如果怎么样都无法成功,请从github上拉取一份最新的wda代码!

git clone https://github.com/facebook/WebDriverAgent.git
cd 到WebDriverAgent
sh ./Scripts/bootstrap.sh

运行成功后,把这一份代码替换到/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent下就OK了。一定要先运行成功,再替换!

9.运行appium-doctor,查看结果

appium-doctor

info AppiumDoctor Appium Doctor v.1.4.3
info AppiumDoctor ### Diagnostic starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor  ✔ Node version is 8.9.4
info AppiumDoctor  ✔ Xcode is installed at: /Applications/Xcode.app/Contents/Developer
info AppiumDoctor  ✔ Xcode Command Line Tools are installed.
info AppiumDoctor  ✔ DevToolsSecurity is enabled.
info AppiumDoctor  ✔ The Authorization DB is set up properly.
info AppiumDoctor  ✔ Carthage was found at: /usr/local/bin/carthage
info AppiumDoctor  ✔ HOME is set to: /Users/limaolin
WARN AppiumDoctor  ✖ ANDROID_HOME is NOT set!
WARN AppiumDoctor  ✖ JAVA_HOME is NOT set!
WARN AppiumDoctor  ✖ adb could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor  ✖ android could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor  ✖ emulator could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor  ✖ Bin directory for $JAVA_HOME is not set
info AppiumDoctor ### Diagnostic completed, 6 fixes needed. ###
info AppiumDoctor 
info AppiumDoctor ### Manual Fixes Needed ###
info AppiumDoctor The configuration cannot be automatically fixed, please do the following first:
WARN AppiumDoctor - Manually configure ANDROID_HOME.
WARN AppiumDoctor - Manually configure JAVA_HOME.
WARN AppiumDoctor - Manually configure ANDROID_HOME and run appium-doctor again.
WARN AppiumDoctor - Add '$JAVA_HOME/bin' to your PATH environment
info AppiumDoctor ###
info AppiumDoctor 
info AppiumDoctor Bye! Run appium-doctor again when all manual fixes have been applied!
info AppiumDoctor

10.配置Android_HOME、JAVA_HOME

下载Android SDK Manager , 下载成功后,打开终端,输入cd到Android SDK的tools目录所在路径(从下载可见tools目录,将tools目录直接拖入到cd后面即可自动补全路径)

再输入命令./android sdk,弹出SDK Manager,如下图:

 

vi ~/.bash_profile

添加HOME路径:

export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib
export ANDROID_HOME=/usr/local/android-sdk-macosx

执行sources命令:

source ~/.bash_profile

再次运行appium-doctor查看结果,此时:

info AppiumDoctor Appium Doctor v.1.4.3
info AppiumDoctor ### Diagnostic starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor  ✔ Node version is 8.9.4
info AppiumDoctor  ✔ Xcode is installed at: /Applications/Xcode.app/Contents/Developer
info AppiumDoctor  ✔ Xcode Command Line Tools are installed.
info AppiumDoctor  ✔ DevToolsSecurity is enabled.
info AppiumDoctor  ✔ The Authorization DB is set up properly.
info AppiumDoctor  ✔ Carthage was found at: /usr/local/bin/carthage
info AppiumDoctor  ✔ HOME is set to: /Users/limaolin
info AppiumDoctor  ✔ ANDROID_HOME is set to: /usr/local/android-sdk-macosx
info AppiumDoctor  ✔ JAVA_HOME is set to: /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
info AppiumDoctor  ✔ adb exists at: /usr/local/android-sdk-macosx/platform-tools/adb
info AppiumDoctor  ✔ android exists at: /usr/local/android-sdk-macosx/tools/android
info AppiumDoctor  ✔ emulator exists at: /usr/local/android-sdk-macosx/tools/emulator
info AppiumDoctor  ✔ Bin directory of $JAVA_HOME is set
info AppiumDoctor ### Diagnostic completed, no fix needed. ###
info AppiumDoctor 
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor

如果还没有生效的话,进入终端的偏好设置:

修改shell的打开方式为 /bin/bash 安装zsh的童鞋自行修改为zshell的路径~

11.编译WDA

WDA是appium自动化测试的核心。

配置正确的BundleId和证书,编译WebDriverAgentLibWebDriverAgentRunner

cmd+U运行测试,或者

cd  /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真机的udid' test

开始测试

常见问题1:

解决方法: 在通用-描述文件与设备管理中信任刚才配置的开发者!重复刚才的命令就OK了~

常见问题2:

Connection peer refused channel request for "dtxproxy:XCTestDriverInterface:XCTestManager_IDEInterface";
channel canceled Failed to run tests: The operation couldn’t be completed. (DTXProxyChannel error 1.)

解决方法: 重新插拔一下USB线

当出现如下:

 

在浏览器访问 ServerURL/status 地址,如果没有出现listening on USB 如下图:

 

打开终端窗口,输入iproxy 8100 8100 ,此时在MAC Safari中访问http://localhost:8100/status 确认WDA是否运行成功。如图:

inspector的地址是http://localhost:8100/inspector, inspector是用来查看UI的图层,方便写测试脚本用的。

这里的inspector是wda自带的,Appium-desktop 桌面版的inspector功能更加丰富,还可以录制脚本,搭建环境更省时间,建议大家使用桌面版。

至此,Appium环境搭建就基本完成了。

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

  全套资料获取方式:点击下方小卡片自行领取即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DRM遇到的实际问题及领悟(2)

接前一篇文章:DRM遇到的实际问题及领悟(1) 三、进一步定位 上回说到使用网上例程有同样会遇到mmap错误的问题,对于这个错误,perror只给出了“Invalid argument”的错误原因,具体错在哪里,并不知…

多元回归分析

建模复习 目录 前言 一、回归的思想 1,介绍 2,回归分析的分类 3,数据类型 二、一元线性回归 1,一元线性函数拟合 2,一元线性回归模型 3,回归系数 1,回归系数的解释 2,内生性 3&…

大模型技术实践(四)|参数高效微调技术解析及AdaLoRA的应用

在上一期的大模型技术实践中,我们为大家介绍了基于“LangChainLLM”框架快速搭建知识增强后的问答机器人,并探讨了提升模型内容理解和执行能力的潜在优化方向。本期内容UCloud将为您介绍参数高效微调技术(PEFT),即对已…

软件研发团队建设---利用“鲇鱼效应”推进研发团队人文环境的建设手记(2)

软件研发团队建设—利用“鲇鱼效应”推进研发团队人文环境的建设手记(2) 背景 软件研发团队建设—如何协助业主建设软件研发团队并提高其力量的手记(1) 与业主某研发人员的沟通 (长图,耐心点&#xff0…

CDS(一)

Core Data Services 核心数据服务 DDL 定义Query Language 查询DCL 控制(权限相关)model,从语义层获取数据open SQL 访问CDS viewCDS权限定义,集成旧的权限概念扩展native SQL扩展SQL建模和声明 ABAP ViewCDS View支持所有数据库是是支持查询…

全网最细,Jenkins配合GitLab分支自动合并/自动创建(超细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 GitFlow工作流简介…

python(自4) xpath下载 lxml安装 lxml语法 使用方式

(一)安装 搜索xpath 讲解 XPath 教程 (w3school.com.cn) 一,下载地址 : https://chrome.zzzmh.cn/info/hgimnogjllphhhkhlmebbmlgjoejdpjl 二 ,拖拽 (二)lxml安装 cmd 打开终端 cd pythond…

数据库及分类详细介绍

目录 一、数据库详细介绍1、什么是数据库2、数据库的种类3、常见的数据库4、关系型数据库4.1、关系型数据库介绍4.2、关系型数据库的优缺点4.3、关系型数据库小结 5、非关系型数据库5.1、非关系数据库诞生的背景5.2、非关系型数据库的介绍5.3、非关系型数据库的优缺点5.4、非关…

LInux本地连接超时ip未显示

关闭防护墙 systemctl stop firewalld 查看防火墙状态 systemctl status firewalld 开启80端口 /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 查看Ip ifconfig

清能股份2MW热电联供系统成功下线

2023年9月26日,由清能股份旗下豫氢动力承接的2MW燃料电池热电联供项目已正式下线,发往焦作煤业(集团)开元化工有限责任公司(简称“开元化工”)安装运营。 开元化工是河南知名氯碱国企,该项目是国…

左对齐和右对齐

%d默认为左对齐&#xff0c;%5d为右对齐&#xff08;以空格补齐&#xff09;&#xff0c;%05d为右对齐&#xff08;以0补齐&#xff09;&#xff0c;%-5d左补齐&#xff08;以空格补齐&#xff09;&#xff0c;整数和小数同理。%.xf,x为小数点后保留的位数。 #include<stdi…

WebGL实现透明物体(α混合)

目录 α混合 如何实现α混合 1. 开启混合功能&#xff1a; 2. 指定混合函数 混合函数 gl.blendFunc&#xff08;&#xff09;函数规范 可以指定给src_factor和dst_factor的常量 混合后颜色的计算公式 加法混合 半透明的三角形&#xff08;LookAtBlendedTriangl…

使用Python和Pandas处理网页表格数据

在我们的日常工作和生活中&#xff0c;经常会遇到需要处理大量数据的情况&#xff0c;而网页表格数据则是其中常见的一种形式。如果我们能够灵活地使用Python和Pandas这两个强大的工具&#xff0c;就能够快速、高效地对这些数据进行处理和分析。 首先&#xff0c;我们需要了解…

游戏服务商Latis Global参展2023 ChinaJoy B2B

第20届ChinaJoy于2023年7月在上海举行了为期四天的博览会,参展观众达到了33.8万人次。ChinaJoy是全球最具知名度与影响力的年度盛会之一,涵盖了包括游戏、动漫、互联网影视、电子竞技、潮流玩具、智能娱乐在内的多个数字娱乐领域。ChinaJoy不仅仅代表了数字娱乐领域的最新风向,…

搞定零售出海的底层挑战,泡泡玛特的经验是什么?

出品 | CSDN 云计算 从 2010 年成立&#xff0c;2016 年发布 Molly IP 的盲盒产品到现在&#xff0c;泡泡玛特已经成为在全球拥有员工 4000 多人的知名潮流玩具品牌。就像在中国市场被喜爱的迪士尼、日漫等多个 IP 一样&#xff0c;泡泡玛特从 2022 年开始也带着众多 IP 走出中…

如何正确监测蓄电池健康?狠狠学到!

蓄电池在现代生活和工业中发挥着关键作用&#xff0c;它们为无数设备和系统提供了必要的电力支持。然而&#xff0c;蓄电池的性能和可靠性对许多应用至关重要。监控蓄电池状态和性能变得越来越重要&#xff0c;以确保它们在需要时始终可用。 为此&#xff0c;蓄电池监控系统应运…

从零开始之了解电机及其控制(8)clarke和park变换

为了最大化无刷电机产生的扭矩&#xff0c;我们希望感应磁场与转子磁场正交并引导转子磁场&#xff0c;无刷电机定子产生的磁场矢量将与电流矢量逆时针旋转 90 度 但现在我们要稍微改变这个y电路的外观&#xff0c;我们不是将相位表示为电阻器&#xff0c;它会产生垂直于电流方…

家电行业 EDI:Miele EDI 需求分析

Miele是一家创立于1899年的德国公司&#xff0c;以其卓越的工程技术和不懈的创新精神而闻名于世。作为全球领先的家电制造商&#xff0c;Miele的经营范围覆盖了厨房、洗衣和清洁领域&#xff0c;致力于提供高品质、可持续和智能化的家电产品。公司的使命是为全球消费者创造更美…

TSM动作识别模型【详解】

文章目录 本文使用的是somethingv2数据集&#xff0c;解压后是如下形式&#xff1b; 由于该压缩数据进行了分卷操作&#xff0c;需要合并后才能进行解压。首先我们将下面4个json文件剪贴到其他文件夹&#xff0c;只保留00-19的文件&#xff0c;然后在该文件夹下打开cmd&#xf…

Unity vscode 官方debug

把这个先unlock 再升级到最新的 然后重新生成 project files 打开 launch.json {"version": "0.2.0","configurations": [{"name": "Attach to Unity","type": "vstuc","request": "a…