android和ios测试环境搭建,iOS自动化测试环境搭建

水恩
2023-12-01

macOS相关库安装

* libimobiledevice

brew install libimobiledevice

使用本机与iOS设备的服务进行通信的库。

* ideviceinstaller

brew install ideviceinstaller

获取设备uuid、安装app、卸载app、获取bundleid。

* carthage

brew install carthage

第三方库管理工具。

* ios-deploy

brew install ios-deploy

ios-deploy不依赖于xcode进行安装和调试iOS应用程序。

* node & npm

brew install node

brew install npm

* appium-doctor

npm install -g appium-doctor

* 验证appium环境

> appium-doctor

info AppiumDoctor Appium Doctor v.1.16.0

info AppiumDoctor ### Diagnostic for necessary dependencies starting ###

info AppiumDoctor ✔ The Node.js binary was found at: /usr/local/bin/node

info AppiumDoctor ✔ Node version is 15.5.1

info AppiumDoctor ✔ Xcode is installed at: /Applications/Xcode.app/Contents/Developer

info AppiumDoctor ✔ Xcode Command Line Tools are installed in: /Applications/Xcode.app/Contents/Developer

info AppiumDoctor ✔ DevToolsSecurity is enabled.

info AppiumDoctor ✔ The Authorization DB is set up properly.

info AppiumDoctor ✔ Carthage was found at: /usr/local/bin/carthage. Installed version is: 0.36.0

info AppiumDoctor ✔ HOME is set to: /Users/sven

WARN AppiumDoctor ✖ ANDROID_HOME environment variable is NOT set!

WARN AppiumDoctor ✖ JAVA_HOME environment variable is NOT set!

WARN AppiumDoctor ✖ adb, android, emulator could not be found because ANDROID_HOME or ANDROID_SDK_ROOT is NOT set!

WARN AppiumDoctor ✖ Cannot check $JAVA_HOME requirements since the environment variable itself is not set

info AppiumDoctor ### Diagnostic for necessary dependencies completed, 4 fixes needed. ###

info AppiumDoctor

info AppiumDoctor ### Diagnostic for optional dependencies starting ###

WARN AppiumDoctor ✖ opencv4nodejs cannot be found.

info AppiumDoctor ✔ ffmpeg is installed at: /usr/local/bin/ffmpeg. ffmpeg version N-100459-ga7f9b3b954 Copyright (c) 2000-2020 the FFmpeg developers

WARN AppiumDoctor ✖ mjpeg-consumer cannot be found.

WARN AppiumDoctor ✖ set-simulator-location is not installed

WARN AppiumDoctor ✖ idb and idb_companion are not installed

WARN AppiumDoctor ✖ applesimutils cannot be found

info AppiumDoctor ✔ ios-deploy is installed at: /usr/local/bin/ios-deploy. Installed version is: 1.11.3

WARN AppiumDoctor ✖ bundletool.jar cannot be found

WARN AppiumDoctor ✖ gst-launch-1.0 and/or gst-inspect-1.0 cannot be found

info AppiumDoctor ### Diagnostic for optional dependencies completed, 7 fixes possible. ###

info AppiumDoctor

info AppiumDoctor ### Manual Fixes Needed ###

info AppiumDoctor The configuration cannot be automatically fixed, please do the following first:

WARN AppiumDoctor ➜ Make sure the environment variable ANDROID_HOME is properly configured for the Appium process. Refer https://github.com/appium/java-client/blob/master/docs/environment.md for more details.

WARN AppiumDoctor ➜ Make sure the environment variable JAVA_HOME is properly configured for the Appium process. Refer https://github.com/appium/java-client/blob/master/docs/environment.md for more details.

WARN AppiumDoctor ➜ Manually configure ANDROID_HOME and run appium-doctor again.

WARN AppiumDoctor ➜ Set $JAVA_HOME environment variable to the root folder path of your local JDK installation

info AppiumDoctor

info AppiumDoctor ### Optional Manual Fixes ###

info AppiumDoctor The configuration can install optionally. Please do the following manually:

WARN AppiumDoctor ➜ Why opencv4nodejs is needed and how to install it: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/image-comparison.md

WARN AppiumDoctor ➜ mjpeg-consumer module is required to use MJPEG-over-HTTP features. Please install it with 'npm i -g mjpeg-consumer'.

WARN AppiumDoctor ➜ set-simulator-location is needed to set location for Simulator. Please read https://github.com/lyft/set-simulator-location to install it

WARN AppiumDoctor ➜ Why idb is needed and how to install it: https://github.com/appium/appium-idb

WARN AppiumDoctor ➜ Why applesimutils is needed and how to install it: http://appium.io/docs/en/drivers/ios-xcuitest/

WARN AppiumDoctor ➜ bundletool.jar is used to handle Android App Bundle. Please read http://appium.io/docs/en/writing-running-appium/android/android-appbundle/ to install it

WARN AppiumDoctor ➜ gst-launch-1.0 and gst-inspect-1.0 are used to stream the screen of the device under test. Please read https://appium.io/docs/en/writing-running-appium/android/android-screen-streaming/ to install them and for more details

info AppiumDoctor

info AppiumDoctor ###

info AppiumDoctor

info AppiumDoctor Bye! Run appium-doctor again when all manual fixes have been applied!

info AppiumDoctor

xcode

xcode是iOS开发环境,可以到appstore下载安装。

xcode的安装需要macOS升级到最新的版本,如果你的系统不是最新版本需要升级。

webDriverAgent

在模拟器中运行的用于iOS的WebDriver服务器。

https://github.com/appium/WebDriverAgent

该项目由facebook开发,appium拉了个分支来维护,更新上超过了facebook,所以我们用appium的分支。

* 通过git clone将项目克隆下来。

* 进入项目目录执行shell脚本:

../WebDriverAgent> ./Scripts/bootstrap.sh

* 通过xcode导入WebDriverAgent项目

找到build Setting -->packaging --> Product Bundle Identifier 选项,将值修改为唯一识别的字符串。

Build Phases --> Copy frameworks -->检查框架。

*RoutingHTTPServer.framework

*YYCache.framework

如果没有这些框架,点击下方加号+添加。

iPhone

准备一部iPhone手机,通过数据线与PC进行连接。

1、选择连接的手机

2、菜单栏:product --> Scheme --> WebDriverAgentRunner

3、在iPhone手机上打开设置:通用 --> 描述文件与设备管理 --> 开发者App,设置 App Development xxxxxx在此iPhone上受信任。

4、菜单栏: procudt -- > Test

5、检查日志是否有错误。

iproxy

安装usbmuxd,他自带了iproxy小工具,iproxy将设备上的端口映射到电脑上的某个端口。

brew install usbmuxd

iproxy 8100 8100

http://localhost:8100/status

开始测试

可以开始测试了,可以有如下几种选择:

* appium

https://github.com/appium/python-client

* Openatx

https://github.com/openatx/facebook-wda

我选 openatx/fackbook-wda,因为他更加简单。

安装:

pip3 install -U facebook-wda

测试脚本:

import wda

c = wda.Client('http://localhost:8100')

print (c.status())

结果

AttrDict({'message': 'WebDriverAgent is ready to accept commands', 'state': 'success', 'os': {'testmanagerdVersion': 28, 'name': 'iOS', 'sdkVersion': '14.2', 'version': '14.1'}, 'ios': {'ip': '192.168.118.140'}, 'ready': True, 'build': {'time': 'Mar 25 2021 14:22:55', 'productBundleIdentifier': 'com.facebook.WebDriverAgentRunner'}, 'sessionId': None})

好了,到此环境就搭建完毕!

 类似资料: