环境搭建目录
前提环境
python
selenium
setuptools,pip
通用环境
Homebrew
Node & NPM
Carthage
Appium
Appium Doctor
iOS 环境
Xcode
ios-deploy
ideviceinstaller & libimobiledevice
ios_webkit_debug_proxy
一、前提环境配置
安装python
下载python进行安装https://www.python.org/,默认安装,安装好之后,打开终端,输入python,如提示不是内部命令,则将python安装目录添加到环境变量Path中。
安装setuptools,pip
下载setuptools,pip https://pypi.python.org/pypi/setuptools https://pypi.python.org/pypi/pip
打开cmd 进入setuptools解压目录,输入:python setup.py install 进入pip解压目录,输入:python setup.py install 安装好后,打开终端,输入pip,如提示不是内部命令,则将python安装目录下Scripts目录添加到环境变量Path中。
安装selenium
终端输入pip install Selenium安装最新版本的selenium。
pip install Selenium 如需安装指定的版本,则pip install Selenium==版本号。
pip install Selenium==版本号
二、通用环境配置
安装 Homebrew
Homebrew是一个包管理软件,它可以使我们更容易地安装其他一些软件,终端输入安装:
安装
MacBook-Air ~ % /bin/bash -c "(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
重新安装
MacBook-Air ~ % /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
检查homebrew是否安装
MacBook-Air ~ % brew -v
MacBook-Air ~ % brew list //查看已安装列表
MacBook-Air ~ % brew update //更新Homebrew
如果安装失败(网速不行等。。),可以打开网址:http://vip.ytesting.com/q.do?a&id=ff80808172521d8201726a74986f0880 将其内容保存为homebrew.txt,然后终端输入:
MacBook-Air ~ % /usr/bin/ruby homebrew.txt
注意:此步骤还顺带安装了Xcode命令行工具(xcode-commaindline-tools)。
安装 Node & NPM
Node是一个javascript运行时环境,npm是节点包管理器。我们需要这些,因为Appium是一个节点应用程序。在终端中,输入以下命令(此命令也将安装npm):
安装
MacBook-Air ~ % brew install node
查看node版本
MacBook-Air ~ % node -v
重新安装:
MacBook-Air ~ % brew reinstall node
image.png
默认的npm源再国内都很慢,安装好node之后需要重新配置一个国内源
MacBook-Air ~ % npm config set registry https://registry.npm.taobao.org/
MacBook-Air ~ % npm -v
image.png
image.png
安装 Carthage
Carthage是一个依赖管理器,类似于java的maven,WebDriverAgent需要它,终端输入:
安装carthage
MacBook-Air ~ % brew install carthage
更新carthage
MacBook-Air ~ % brew upgrade carthage
重新安装:
MacBook-Air ~ % brew reinstall carthage
安装完成后检查一下是否安装成功
MacBook-Air ~ % carthage version //打印出版本号即表示安装成功
如果安装
carthage
出现以下错误:Error: An unexpected error occurred during the
brew link
stepThe formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks
原因是
carthage
已经安装,但是没有 link 到 brew,还有就是文件夹权限问题,在终端输入:MacBook-Air ~ % sudo mkdir /usr/local/Frameworks
MacBook-Air ~ % sudo chown $(whoami):admin /usr/local/Frameworks
MacBook-Air ~ % brew link carthage
安装 Appium(二选1)
Appium(Version 1.13)是一个用于本地、混合和移动web应用程序的开源测试自动化框架。它使用WebDriver协议驱动iOS、Android和Windows mobile应用程序。
方式1:安装桌面版 appium-server(推荐)
桌面版包含了appium-server,同时也包含一个元素定位器,建议安装桌面版。
进入官网下载
MacBook-Air ~ % git clone https://github.com/appium/appium-desktop.git
image.png
其他版本:进入官网下载1.17.1
image.png
方式2:安装 appium-server 版
1、安装 appium-server
终端安装server版输入:
MacBook-Air ~ % npm install -g appium
默认安装最新的版本,如果想安装指定的版本:
MacBook-Air ~ % npm install -g appium@1.7.2
卸载 Appium:
MacBook-Air ~ % npm uninstall -g appium
MacBook-Air ~ % npm cache clean --force
安装appium client
appium主站上给出的命令是npm install wd 这应该是老版本的安装方法:
MacBook-Air ~ % npm install wd # get appium client
MacBook-Air ~ % npm wd -v # 检查是否安装成功。
推荐下面的方法进行安装:
安装python-client
MacBook-Air ~ % git clone git@github.com:appium/python-client.git # 下载python-client
MacBook-Air ~ % cd python-client # 进入python-client目录
MacBook-Air ~ % python setup.py install # 安装python-client
安装成功:
Finished processing dependencies for Appium-Python-Client==0.30 # 表示安装成功,安装版本0.30
安装appium-doctor:
1、安装appium-doctor
终端运行appium-doctor检查appium安装是否成功
MacBook-Air ~ % npm install appium-doctor -g
MacBook-Air ~ % node your-appium-test.js
2、检查appium安装版本
appium doctor用来检查appium的是否成功安装。手动下载安装appium doctor的网址在:https://github.com/appium/appium-doctor
MacBook-Air ~ % appium -v # 安装完成之后输入appium -v,显示版本号表示appium server安装成功
3、启动appium服务
在终端输入appium &。输出下面的信息,则表示appium server启动成功了。
MacBook-Air ~ % appium &
[1] 965$ [Appium] Welcome to Appium v1.9.1
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
在终端输入:appium-doctor --ios 检查 iOS环境环境
其中的 WARN(警告)不用管:
image.png
iOS自动化 必要 环境配置没有问题
配置jdk+Android SDK 环境配置--针对Android
查看所有 必要 配置环境是否成功
image.png
image.png
打开.bash_profile
MacBook-Air ~ % open .bash_profile
Setting PATH for SDK
export ANDROID_HOME=/Users/用户名/Library/Android/sdk
export PATH=PATH
export PATH=PATH
Setting PATH for Jdk
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home
export PATH=PATH
export CLASSPATH=.:JAVA_HOME/lib/tools.jar
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
关闭保存后,更新.bash_profile
MacBook-Air ~ % source .bash_profile
在终端输入:appium-doctor --Android 检查 Android环境环境
image.png
安装完成后,终端输入appium-doctor 检测环境是否成功(查询结果显示❌表示没有配置,需要配置,查看需要设置的必要环境)。
安装appium-doctor,android方面的环境需要:
必选项—— ANDROID_HOME、JAVA_HOME、adb、android、emulator
其中的警告不用管
appium-doctor # 默认安装路径:/usr/local/lib/node_modules/appium/node_modules/
IOS自动化环境配置
安装Xcode和模拟器
启动Mac应用程序商店并下载/安装Xcode(Version 13.1)。安装之后,启动Xcode并选择 Xcode > Preferences > Components 来安装可能想要测试的模拟器。
image.png
安装Command Line Tools
默认是不会安装Command Line Tools的,Command Line Tools是在Xcode中的一款工具,可以在命令行中运行C程序。为了配置appium环境,我们需要安装Xcode Command Line Tools。
官网下载
下载完成后,双击已下载的 .dmg 进行安装
检验 Command Line Tools 是否安装成功
方法一:
MacBook-Air ~ % xcode-select --install # 查看是否安装
xcode-select: error: command line tools are already installed, use "Software Update" to install updates(错误:命令行工具已经安装,请使用“软件更新”安装更新)
方法二:打开Xcode,创建一个新的项目,在OSX下面选择Application,如果右侧出现Command line tool图标,表示已经安装成功。
image.png
方法三:打开XCode 新建工程,如果安装了,在新建窗口可以看到
安装完成后,在终端中输入以下命令来查看安装版本:
MacBook-Air ~ % xcodebuild -version
Xcode 11.6
如果已经安装过xcode,appium-doctor提示未安装,则运行命令即可:
MacBook-Air ~ % sudo xcode-select -r
Tips
:
查看已启动的模拟器udid
xcrun simctl list | grep '(Booted)'
列出所有设备,包括真机、模拟器、mac
instruments -s devices
录像功能
xrecord --quicktime --list
xrecord --quicktime --name="iPhone" --out="/Users/blah/video/iphone.mp4" --force
安装 libimobiledevice & ideviceinstaller
libimobiledevice
是一个跨平台的软件库,支持 iPhone®, iPod Touch®, iPad® and Apple TV® 等设备的通讯协议。不依赖任何已有的私有库,不需要越狱。应用软件可以通过这个开发包轻松访问设备的文件系统、获取设备信息,备份和恢复设备,管理 SpringBoard 图标,管理已安装应用,获取通讯录、日程、备注和书签等信息,使用 libgpod 同步音乐和视频。 ideviceinstaller
是一个与iOS设备的installation_proxy交互的工具,允许安装、升级、卸载、存档、还原和列举已安装或存档的app。此工具用于在真机上运行测试,默认是都安装的。
MacBook-Air ~ % brew install libimobiledevice --HEAD # 安装最新的更新
MacBook-Air ~ % brew reinstall libimobiledevice # 重新安装
MacBook-Air ~ % brew install ideviceinstaller # 用于查看bundleid
MacBook-Air ~ % brew reinstall ideviceinstaller # 重新安装
如果安装时遇到: “invalid active developer path” 则运行:
MacBook-Air ~ % xcode-select --install
MacBook-Air ~ % sudo xcode-select -r
可能出现的问题
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib Referenced from:
/usr/local/opt/libimobiledevice/lib/libimobiledevice.6.dylib Reason: image not found
如果遇到如上错误,则先卸载ideviceinstaller 和 libimobiledevice
MacBook-Air ~ % brew uninstall ideviceinstaller
MacBook-Air ~ % brew uninstall libimobiledevice
然后再重安装即可
安装 ios-deploy
ios-deploy
同样是一个不需要用Xcode安装和调试应用的命令行工具。需要一个有效的开发者证书,需要 Xcode 7以上的版本。终端输入命令进行安装:
MacBook-Air ~ % brew install ios-deploy # 安装命令
MacBook-Air ~ % brew reinstall ios-deploy # 重新安装
MacBook-Air ~ % brew upgrade ios-deploy # 更新命令
安装 ios_webkit_debug_proxy
Appium使用ios_webkit_debug_proxy这个工具在真机上访问web view。在终端中,运行以下命令:
MacBook-Air ~ % brew install ios-webkit-debug-proxy # 安装命令
MacBook-Air ~ % brew reinstall ios-webkit-debug-proxy # 重新安装
至此iOS环境搭建完毕!!!只适用于模拟器,真机的话还需要配置。
iOS真机调试环境配置
编译webagentrunner项目,安装到被测真实设备上
查看appium的安装位置,正常npm安装的位置应该在/usr/local/bin/appium下
MacBook-Air ~ % which appium
/usr/local/bin/appium (命令版安装)
命令行安装的appium一般安装在/usr/local/bin/appium
下,WebDriverAgent将会在路径:/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
下;如果是桌面版
的,WebDriverAgent的路径是:ls /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent
命令行版
MacBook-Air ~ % cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
桌面版
MacBook-Air ~ % cd /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent
image.png
首先查看路径(/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent
)下有没有WebDriverAgent.xcodeproj
(有的话跳过下边,直接用Xcode打开即可)
2)如果/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent 没有WebDriverAgent.xcodeproj存在,则打开终端运行如下命令搭建项目:
MacBook-Air ~ % cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
MacBook-Air ~ % mkdir -p Resources/WebDriverAgent.bundle
MacBook-Air ~ % ./Scripts/bootstrap.sh -d
然后用Xcode 打开
WebDriverAgent.xcodeproj
,在 “Signing&Capabilities” 下将 WebDriverAgentLib
和 WebDriverAgentRunner
设置成 “Automatically manage signing” 并在 “Team” 中选择你的开发团队 ;image.png
image.png
新用户第一次需要创建Team团队 image.png
image.png
image.png image.png image.png
个人证书调试失败
Failed to register bundle identifier.
The app identifier "com.facebook.WebDriverAgentRunner" cannot be registered to your development team because it is not available. Change your bundle identifier to a unique string to try again.
需要手动更改目标的bundle id
,方法是进入“Build Settings”选项,更改“Product bundle Identifier”的值使Xcode将接受,默认为com.facebook.WebDriverAgentRunner
,你需要改成不一样的,如:io.automation.WebDriverAgentRunner
返回 “Signing&Capabilities” 选项,看到对于文件WebDriverAgentRunner的配置文件已经创建成功了
image.png
image.png
解决⚠️问题
image.png
真机测试
最后,build项目: 通过Xcode获取udid:
利用ios-deploy获取,其他参考上边的介绍
MacBook-Air ~ % ios-deploy -c
image.png
命令行进入到WDA项目目录
MacBook-Air ~ % cd /usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent
将WDA安装到被测手机上,并测试该应用
MacBook-Air ~ % xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=<测试机的udid>' test
image.png
报错:
error: No profiles for 'io.uitest.WebDriverAgentRunner.xctrunner' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'io.uitest.WebDriverAgentRunner.xctrunner'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild. (in target 'WebDriverAgentRunner' from project 'WebDriverAgent')报这个错是因为没有接入相关的设备到MAC上,只要设备接入,并通过XCode菜单:Product->Destnation->"Select Devices"选中要连接的设备就行。
XCode:
Product->Destination->"Select your iphone"
image.png
Product->Scheme->"Select WebDriverAgentRunner"
image.png
Product -> Test
image.png
注意:运行Test之前,手机先解锁再通过USB线连接到电脑。
运行完"Test",如果遇到这个报错:
运行报错:
image.png
/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj User-supplied CFBundleIdentifier value 'com.facebook.wda.lib' in the Info.plist must be the same as the PRODUCT_BUNDLE_IDENTIFIER build setting value 'com.facebook.WebDriverAgentLib'.
解决方案:
image.png
运行报错:
image.png
/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.h:16:9: 'CocoaAsyncSocket/GCDAsyncSocket.h' file not found
解决:进入appium-webdriveragent目录,重新执行:
MacBook-Air % cd /usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent
MacBook-Air appium-webdriveragent % sh ./Scripts/bootstrap.sh
image.png
再次执行Product -> Test,弹出密钥授权弹窗,输入密钥(多次输入密钥,直到弹窗消失)
image.png
image.png
最后报错:Command CodeSign failed with a nonzero exit code
解决方案---通过终端命令:MacBook-Air appium-webdriveragent % xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=000-000080E' test
执行中会弹出密钥弹窗,多次输入密钥,直到弹窗消失
image.png
最后机上可以看到一个没有图标的 WebDriverAgentRunner.app 应用,进入设置 -》通用 -》设备管理 -》点击 开发者app下面的证书 -》点击“第一个蓝色字体信任按钮” -》点击信任,再重新执行项目即可正常连接
xcode点击▶️直接运行:
image.png
再次报错:
/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj User-supplied CFBundleIdentifier value 'com.facebook.wda.runner' in the Info.plist must be the same as the PRODUCT_BUNDLE_IDENTIFIER build setting value 'io.uitest.WebDriverAgentRunner'.
解决方案:
image.png
最终看到这样输出就是成功了:
Test Suite ‘All tests’ started at 2017-01-23 15:49:12.585
Test Suite ‘WebDriverAgentRunner.xctest’ started at 2017-01-23 15:49:12.586
Test Suite ‘UITestingUITests’ started at 2017-01-23 15:49:12.587
Test Case ‘-[UITestingUITests testRunner]’ started.
t = 0.00s Start Test at 2017-01-23 15:49:12.588
t = 0.00s Set Up
验证是否安装成功,确保手机和电脑连接同一个WiFi(同一局域网内),可以不设置这些内容:
export DEVICE_URL='http://<device IP>:8100'
export JSON_HEADER='-H "Content-Type: application/json;charset=UTF-8, accept: application/json"'
curl -X GET DEVICE_URL/status
直接在手机浏览器中输入这个地址http://127.0.0.1:8100/status返回一个json串即表明连接成功
安装成功后运行如果遇到这样的错误:
2017-01-24 09:02:18.358 xcodebuild[30385:339674] Error Domain=com.apple.platform.iphoneos Code=-12 "Unable to launch com.apple.test.WebDriverAgentRunner-Runner" UserInfo={NSLocalizedDescription=Unable to launch com.apple.test.WebDriverAgentRunner-Runner, NSUnderlyingError=0x7fa839cadc60 {Error Domain=DTXMessage Code=1 "(null)" UserInfo={DTXExceptionKey=The operation couldn’t be completed. Unable to launch com.apple.test.WebDriverAgentRunner-Runner because it has an invalid code signature, inadequate entitlements or its profile has not been explicitly trusted by the user. : Failed to launch process with bundle identifier 'com.apple.test.WebDriverAgentRunner-Runner'}}}
2017-01-24 09:02:18.358 xcodebuild[30385:339674] Error Domain=IDETestOperationsObserverErrorDomain Code=5 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted}
Testing failed:
Test target WebDriverAgentRunner encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted)
至此iOS真机运行环境mac端配置完毕
手机端设置
进入设置,开发者选项,允许UIautomator
Tips:
真机运行务必添加这两个参数到capabilities:
{
#xcodeOrgId 类似:TEST INTERNATIONAL
"xcodeOrgId": "<Team ID>",
#xcodeSigningId 是一个由Apple生成的唯一的10个字符的字符串,类似 6387P24J3L
"xcodeSigningId": "iPhone Developer"
}
这两个字段获取方式:
xcodeOrgId
: 开发者组织代码,是一串唯一的10位随机字符串。查找方式:打开keychain,找到苹果开发者对应的证书,点进去,找到Organizational Unit这项,对应的字符串就是了
xcodeSigningId
:直接填 iPhone Developer
真机手动配置补充
udid就是设备唯一识别码了,查看方式参考上文,如果只连接了一台设备可以设置为auto
理想情况下,appium会自动注册并编译,但是如果有出现编译失败报错误码65的现象一般是由于找不到指定的开发者证书,需要我们手动配置一下,配置之后再手动编译一次,下次再运行的时候基本就可以了
第一次在手机构建webdriveragent应用时,xcode需要访问keychain以获取证书,输入当前mac用户的登录密码,然后点击 allow all
即可,如果连续弹出多次对话框就多次点击 allow all
附录
ios-deploy使用命令参考
安装应用
ios-deploy -c # 查看当前链接的设备,获取udid
xxx.app为 Xcode 编译后的应用安装包路径
ios-deploy --id [udid] --bundle [xxx.app] # 给指定设备安装应用,udid是苹果设备唯一识别码
卸载应用
ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] # 给指定连接的设备卸载应用
查看设备已安装的应用
ios-deploy --id [udid] --list_bundle_id # 查看设备安装的所有应用,包括系统应用和第三方应用
ios-deploy --id [udid] --exists --bundle_id # 指定设备检查指定应用是否已经安装
idevice命令用法参考
获取设备的udid的几种方法
idevice_id --list # 略写为 -l 显示当前所连接设备的 udid
idevice_id -l # 显示当前所连接的设备[udid],包括 usb、WiFi 连接
instruments -s devices # 列出设备包括模拟器、真机及 mac 电脑本身
ideviceinfo # 可以在返回的数据中找到 udid
另外苹果手机 safari打开网址http://fir.im/udid 就看到了
安装应用
xxx.ipa为应用在本地的路径
ideviceinstaller -i apppath # 安装apppath下的app
ideviceinstaller -u [udid] -i [xxx.ipa] # 给指定连接的设备安装应用
卸载应用
bundleId为应用的包名
ideviceinstaller -u [udid] -U [bundleId] # 给指定连接的设备卸载应用
查看设备已安装的应用
ideviceinstaller -l #列出手机上所有用户安装的app
运行某个app
idevicedebug run 'APP_BUNDLE_ID' # 可以直接launch某个app,当然,这个app必须是你通过development证书build到手机上的才行
ideviceinstaller -u [udid] -l # 指定设备,查看安装的第三方应用
ideviceinstaller -u [udid] -l -o list_user # 指定设备,查看安装的第三方应用
ideviceinstaller -u [udid] -l -o list_system # 指定设备,查看安装的系统应用
ideviceinstaller -u [udid] -l -o list_all # 指定设备,查看安装的系统应用和第三方应用
获取设备信息
ideviceinfo -u [udid] # 指定设备,获取设备信息
ideviceinfo -u [udid] -k DeviceName # 指定设备,获取设备名称:iPhone6s
idevicename -u [udid] # 指定设备,获取设备名称:iPhone6s
ideviceinfo -u [udid] -k ProductVersion # 指定设备,获取设备版本:10.3.1
ideviceinfo -u [udid] -k ProductType # 指定设备,获取设备类型:iPhone8,1
ideviceinfo -u [udid] -k ProductName # 指定设备,获取设备系统名称:iPhone OS
其他系统文件信息
idevicescreenshot # 截图
ideviceinfo # 获取设备所有信息
idevicesyslog # 获取设备日志
idevicecrashreport -e test # 获取设备 crashlog,test 是文件夹需新建
idevicediagnostics restart # (shutdown、sleep)管理设备状态 - 重启、关机、睡眠等
安装 JDK(android自动化)
下载 Java jdk ,按步骤安装,安装完成后需要在.bash_profile设置 JAVA_HOME ,设置之前你可以通过下边的命令查看Java的安装路径,terminal输入:
/usr/libexec/java_home --v
输出路径:
/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
通过vim 编辑.bash_profile文件,终端输入:
vim ~/.bash_profile
按 i键进入编辑模式,移动到最下边加入如下两行(路径为之前查看的):
[改为你自己的java_home路径]
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
export PATH=PATH
添加后按 Esc按键,输入:wq保存并退出编辑。输入使其生效(或重启终端):
添加后按 Esc按键,输入:wq保存并退出编辑。输入使其生效(或重启终端):
source ~/.bash_profile
网友评论