iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境

编程入门 行业动态 更新时间:2024-10-25 10:27:56

iOS自动化测试方案(四):<a href=https://www.elefans.com/category/jswz/34/1768653.html style=保姆级搭建iOS自动化开发环境"/>

iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境

文章目录

      • 一、基础环境准备
        • 1.1、MacOS虚拟机
      • 二、iPhone虚拟机
      • 三、MacOS虚拟机连接iphone真机
      • 四、扩展&&问题
        • 4.1、如果appium启动app失败,可能是appium driver没有安装xcuitest插件
        • 4.2、下载并安装Appium服务端,inspector元素定位器
        • 4.3、下载appium-inspector
        • 4.4、代码示例:

一、基础环境准备

1、一台MacOS系统主机,可以是macmini、macbook(air\pro)、mac一体机,咱们主打一个经济实惠:MacOS系统虚拟机
2、一台iOS系统真机,俗称iphone
3、anaconda创建python3虚拟环境

1.1、MacOS虚拟机

需要安装软件包管理器:Homebrew

# 在命令行安装HomeBrew并安装其他iOS测试必要的命令
/bin/bash -c "$(curl -fsSL .sh)"

1、brew install node;这个是为了安装npm、appium客户端准备的

brew install npm # 已经安装了node,就已经携带了npm

npm install -g cnpm --registry=

2、安装成功,检查版本号

node -v
npm -v
cnpm -v

效果截图如下

3、安装服务端(相对于真机):npm install -g appium

4、安装appium检测医生:cnpm install -g appium-doctor

appium-doctor检查环境

5、使用本机与苹果iOS设备的服务进行通信的库,类似于安卓的adb命令

ios-deploy 一个不需要用Xcode安装和调试应用的命令行工具。需要一个有效的开发者证书,需要 Xcode 7以上的版本。终端输入命令进行安装:
ios-deploy、ideviceinstaller 类似 android 的 adb; 是 Appium 底层用到的工具之一,用于获取 iOS 设备信息。
libimobiledevice 是一个跨平台的软件库 ; 不依赖任何已有的私有库,不需要越狱。应用软件可以通过这个开发包轻松访问设备的文件系统、获取设备信息,备份和恢复设备,管理 SpringBoard 图标,管理已安装应用,获取通讯录、日程、备注和书签等信息
ideviceinstaller 是一个与iOS设备的installation_proxy交互的工具,允许安装、升级、卸载、存档、还原和列举已安装或存档的app。此工具用于在真机上运行测试,默认是都安装的。

brew install ios-deploy
brew install libimobiledevice
#  主要用于获取设备udid、安装app、卸载app、获取bundleid
brew install ideviceinstaller

idevice_id获取设备uuid

更多命令请移步:Mac如何安装使用libimobiledevice,ideviceinstaller(类似adb ) - 知乎 (zhihu)

6、启动appium服务

二、iPhone虚拟机

在MacOS虚拟机安装Xcode的时候,iOS开发工作者就可以使用其携带的iphone虚拟机进行调试开发了,WebDriverAgent

1、打开Xcode开发工具,前面已经build过了,现在通过product-test将它安装到iphone虚拟机或真机

2、安装成功标识:build successded

3、然后本地就可以直接访问:http://localhost:8100/status

command+shift+G;输入/usr/local/bin/ 可以找到appium快捷命令,右键,显示源文件

4、如果打不开,请在终端进行端口转发:iproxy 8100 8100,通过safari访问http://127.0.0.1:8100/status

该命令用于将手机的端口映射到电脑上的端口,前面的8100是映射到mac电脑的端口,后面是手机wds启动的监听端口,如果映射失败,则安装brew install usbmuxd

三、MacOS虚拟机连接iphone真机

usb连接真机,vmware虚拟机会检测usb设备,选择连接到虚拟机确定即可

1、这时Xcode工具构建安装包到设备中就出现真机选项了

2、先构建进行testing

3、构建成功

4、在控制台出现服务已经启动,并暴露端口

四、扩展&&问题

4.1、如果appium启动app失败,可能是appium driver没有安装xcuitest插件
appium driver install xcuitest
Releases · appium/appium-desktop (github)

如果不想通过github下载安装WebDriverAgent源码,可去Appium Server目录中找到appium-webdriveragent
在访达中选中Appium server右键选择显示包内容:
/Applications/Appium Server GUI.app/Contents/Resources/app/node_modules/appium/node_mudoles/appium-webdriveragent

1、找到对应的目录,可Xcode工具编辑构建wda到真机或虚拟机

2、也可以通过xcodebuild命令构建项目到真机

3、与Xcode工具编辑工具是一样的步骤,在设置开发者账号的时候,提示的是BundleId需要唯一

4、找到Build Settings设置BundleId

再回到Siging Capabilities页面下Signing Certificate Development下面的感叹号就不存在了

4.2、下载并安装Appium服务端,inspector元素定位器

启动appium server GUI或者appiun服务端

有时候并不想打开Xcode工具,想通过命令行来构建app到真机
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=真机的uuid’ test

命令行构建iOS应用报错,是依赖路径不正确,需要切换目录即xcodebuild需要指向Xcode安装执行路径
xcode-select --switch /Applications/Xcode.app/Contents/Developer

再次执行会提示输出MacOS电脑密码

会出现权限问题,需要root权限,所以在命令行前加sudo,会提示password输入mac密码即可;
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=真机的uuid’ test
密令安装第一次,test会失败,但是iOS真机已经安装好了WebDriverAgent应用,只需要进入手机设置–>通用–>VPN与设备管理信任开发者APP账号

4.3、下载appium-inspector

npm install app-inspector -g

在下载目录双击dmg安装appium-inspector

拖住应用图标移动到Application文件夹,双击Appliction进入文件夹可以看到安装的应用已经有图标了,这个可以当安装目录用的,不然很多初学者无法找到应用入口

正常双击应用打开是会有提示的,就是验证不通过,认为你的软件应用有问题,

在Application中双击系统偏好设置,找到安全性与隐私

点击仍要打开,对,你不让我打开,我偏要打开

最后一次,确认我要打开了,退后。。。

启动中

再看看就已经启动好了

安装ideviceinstaller
brew install ideviceinstaller

复制iOS参数,在JSON Representation,上面输入真机wda启动的端口,8100,如果iproxy转发就填如转发端口

可以点击Save As将此刻的配置保存起来,免得下次丢失需要重新录入,再点击start session开启app应用的元素找茬之旅;

Save As之后,在Saved Capabillty Sets设置中查看,可选择直接启动

默认source是应用元素,而点击session information可以选择语言,知道它的初始启动参数是如何写的。

以上就是iOS自动化测试的开发环境搭建过程。

4.4、代码示例:
import unittest
from appium import webdriver
from time import sleepfrom appium.webdrivermon.appiumby import AppiumByclass appiumSimpleTezt(unittest.TestCase):def setUp(self):self.desired_capabilities = {"platformName": "ios","platformVersion": "16.6","deviceName": "iPhone 8P","udid": "3a174cf4dd652dab19a9adb40470959db5325b70","bundleId": "com.byd.BYDi","webDriverAgentUrl": "http://127.0.0.1:8100","noReset": True,  # true不重置app应用,false需要重启app应用  如果已经登录,则不需要重新登录授权"usePrebuiltWDA": True,"useXctestrunFile": True,  # 暂时没发现其他用途"skipLogCapture": True,  # 会影响automationName参数"automationName": "XCuiTest"}self.driver = webdriver.Remote(command_executor='http://127.0.0.1:4723',  # /wd/hubdesired_capabilities=self.desired_capabilities)def test_SignIn(self):next_view_button = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "我的")next_view_button.click()sleep(1)login_button = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "每日签到")login_button.click()sleep(1)login_button = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "SignIn back icon")login_button.click()def tearDown(self):self.driver.quit()if __name__ == '__main__':suite = unittest.TestLoader().loadTestsFromTestCase(appiumSimpleTezt)unittest.TextTestRunner(verbosity=2).run(suite)

更多推荐

iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境

本文发布于:2023-11-16 10:19:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1619003.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:保姆   环境   测试   方案   iOS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!