Android环境搭建
移动端Appium环境部署比Web的selenium环境稍微复杂一些,如用python编写测试用例脚本或者开发测试框架以及UI自动化操作方法是一样的,基本是通用。因两者都是基于selenium,在Python的appium包中实际继承了Selenium,在测试过程中将移动端的页面元素当作是网页来处理。Web和Appium两者区别在于环境部署和脚本部分配置差异。如果对Web的selenium自动化脚本有基础的话,只要环境搭建及配置搞明白可以直接上手Appium移动端自动化测试。
由于网上的Appium部署的环境资料比较零散,不完整,自己总结搭建的appium环境从0到1完整部署过程记录。
一、环境准备:
本文讲解的环境在windows7系统64位版本进行部署。
需要安装的工具清单如下:
1.jdk1.8.0 (64位)
2.android-sdk_r24.4.1-windows (下载地址:http://tools.android-studio.org/index.php/sdk)
3.python:3.6 (下载地址:https://www.python.org/)
4..net framework4.5 (下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=30653)
5.Node.js:node-v10.14.2-x64 (下载地址:https://nodejs.org/en/download)
6.appium-desktop :1.10.0 (下载地址:https://github.com/appium/appium-desktop/releases)
7.Appium-Python-Client:1.10.1
8.夜神摸拟器:6.2.6.3
二、安装jdk
1、在系统环境变量,新增JAVA_HOME为jdk安装路径:D:\Java\jdk1.8.0_181
2、在Path变量中增加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
3、在CLASSPATH变量中增加:%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
三、安装android-sdk
将下载的 Android SDK 解压指定的目录
在系统变量新建:ANDROID_HOME,对应变量值为:D:\android-sdk(sdk安装路径)
path变量里面添加%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools;
注意:
由于目前Google在国内无法访问,所以需要通过镜像方式去下载我们的SDK,就碰到android sdk解压后没有platform-tools目录,或者安装SDK时遇到"Done loading packages"的问题。
1、进入Android SDK安装目录中点击SDK Manager.exe,然后选择Tools->options菜单,弹出如下界面:
录入如下数据:【本人亲测该URL地址镜像服务器可用】
Proxy Server:mirrors.neusoft.edu.cn
Proxy Port:80
并勾选Others框内的第一个复选框,如上图红色圈。
2、列出Android SDK在线更新镜像服务器
- 中国科学院开源协会镜像站地址:
- http://mirrors.opencas.cn 端口:80
- http://mirrors.opencas.org 端口:80
- http://mirrors.opencas.ac.cn 端口:80
- 上海GDG镜像服务器地址:
- http://sdk.gdgshanghai.com 端口:8000
- 北京化工大学镜像服务器地址:
- http://ubuntu.buct.edu.cn/ 端口:80
- http://ubuntu.buct.cn/ 端口:80
- http://ubuntu.buct6.edu.cn/ 端口:80
- 大连东软信息学院镜像服务器地址:
- http://mirrors.neusoft.edu.cn 端口:80
- 腾讯Bugly 镜像:
- http://android-mirror.bugly.qq.com 端口:8080
3、完成代理设置后再次打开SDK Manager.exe,即可更新及安装我们的SDK了。
接下来勾选需要下载的android版本和工具,如下图所示:
如上图Tools的红色圈内必须要勾选安装,下载安装完后,Status状态下会出现Installed表示已安装。
本文选择的是android 6.0版本,如上图。
Extras下Android Support Repository是android系统的兼容库,必须安装,Google USB Driver也安装。
勾选完后,单击右下角install package按钮,安装更新全部内容大概要2小时左右的时间,请耐心等待!
三、安装python
本文选择3.6版本安装完后,进行环境变量配置,指定安装路径目录即可。
在系统变量的path变量新增:D:\Programs\Python\Python36;D:\Programs\Python\Python36\Scripts
四、安装.net framework4.5
安装appium之前,先安装.net framework4.5工具,否则安装appium会报错,直接傻瓜式安装即可。
五、安装Node.js
安装appium之前,需要安装Node工具,傻瓜式安装完后,在cmd窗口录入node -v查看版本号。
六、安装appium-desktop
由于AppiumForWindows一直没更新版本,版本过低,对android系统高版本不支持。由appium-desktop替代。
安装appium-desktop桌面版比较简单,直接傻瓜式安装即可,安装完后桌面出现appium图标,点击打开如下图:
如下命令行版本安装:
1、安装appium 【可安装,也可不安装,前面已安装有appium-desktop桌面版】
npm --registry http://registry.npm.taobao.org install appium -g
验证:cmd输入appium
2、安装appium-doctor检测环境
npm --registry http://registry.npm.taobao.org install appium-doctor -g
验证:cmd输入appium-doctor
七、安装Appium-Python-Client
直接在cmd窗口输入pip3 install Appium-Python-Client安装即可,这个工具是用来能够在客户端编写python脚本去实现操作android系统的APP测试。
八、安装夜神摸拟器
直接傻瓜式安装即可,安装完后,可以直接在夜神摸拟器自带的夜神应用中心HD,搜索需要下载安装APP软件,或者也可以网上下载的apk包文件直接拖到夜神摸拟器窗口就可以实现自动安装app软件。如下图所示:
到此为止,所有的该要安装工具都安装完后,接下来就可以配置,调试跑通起来。
Android环境配置调试
1、连接夜神摸拟器前,先在cmd窗口检测环境sdk和夜神摸拟器版本号是否一致性。否则会报错如下信息:
adb server version(36) doesn’t match this client (40);killing…
- 在cmd窗口输入adb查看版本号
- 在cmd窗口进入夜神安装目录下D:\Program Files\Nox\bin输入命令:
nox_adb.exe connect 127.0.0.1:62001
如夜神版本比SDK的adb的版本号低的话,如下解决办法:
a、关掉夜神模拟器。同时去任务管理器里看下,adb.exe以及nox_adb.exe这2个进程有没有在运行?有的话就结束掉。
b、找到SDK的目录和夜神模拟器的目录,将夜神模拟器目录下原本的adb.exe和nox_adb.exe修改文件名为adb_bak.exe和nox_adb_bak.exe,将SDK目录(D:\android-sdk\platform-tools)下的adb.exe文件复制到夜神模拟器的目录(D:\Program Files\Nox\bin)下,将从SDK目录复制过来的adb.exe放在夜神目录下,同时复制一份改名为nox_adb.exe。
最后在cmd窗口进入夜神安装目录下D:\Program Files\Nox\bin输入命令:nox_adb.exe connect 127.0.0.1:62001后,查看连接信息如下:
如上图表示已经成功连接到夜神摸拟器。
2、点击电脑桌面appium图标启动,点击Start Server按钮启动appium服务。如下图所示:
点击放大镜按钮进入appium配置数据如下图所示:
- platformName :Android 【这里是Android环境】
- platformVersion:4.4.2 【在cmd窗口输入命令:adb shell getprop ro.build.version.release查看版本或者在夜神摸拟器系统信息菜单查看版本号】
- deviceName:驱动名称 【在cmd窗口输入命令:adb devices查看名称】
- appPackage:包名 【在cmd窗口输入命令:aapt dump badging D:\test\taobao.apk(网上下载的taobao.apk文件)】
- appActivity:启动栈 【在cmd窗口输入命令:aapt dump badging D:\test\taobao.apk(网上下载的taobao.apk文件)】
在D:\android-sdk\build-tools\28.0.3目录下的cmd窗口输入aapt dump badging D:\test\taobao.apk命令后,可以找到如下信息。
package: name=‘com.taobao.taobao‘
launchable-activity: name=‘com.taobao.tao.welcom.Welcom‘
查找appPackage和appActivity方法有好多种,选其中一个方法就行了。还可下载的查看包名的apk工具拖到夜神摸拟器窗口安装后,可直接用查看包名工具来查看模拟器已安装所有的APP包名清单,如下图所示:
点击appium界面的右下角“Start Session"打开如下界面,就可以看到连接到夜神摸拟器启动打开淘宝APP软件主界面,就可以定位元素控件写测试脚本了。
如上图appium自带的可定位元素属性,值。另一种方法可用sdk自带的工具D:\android-sdk\tools目录下uiautomatorviewer.bat文件来定位元素,查看属性,值。打开后弹如下界面:
3、接下来就可以编写测试脚本调试是否能跑通,如下图所示:
方法一,使用appium工具定位元素:
方法二,使用SDK自带的uiautomatorviewer工具定位元素如下图所示,前提条件必须关闭appium,否则会报错获取不到当前摸拟器的图像。
通过以上可知控件的元素,就可以编写测试脚本,如下图所示:
需要先启动appium服务,然后执行测试脚本,可通过夜神摸拟器查看当前自动化运行的淘宝APP界面操作测试。如果需要测试真机的话,将手机和电脑通过USB数据线连接,手机打开USB调试模式,USB的连接方式要选择设备文件管理选项。
然后在cmd窗口输入adb devices查看是否连接成功并获取到驱动名。最后在测试脚本的驱动名称改为当前真机驱动名称,再执行测试脚本即可实现在真机跑。
IOS环境搭建
本文介绍搭建IOS的摸拟器和真机的appium环境,部署过程中各种报错遇到不少坑,关键xcode和ios系统、appium版本三者要对应起来,否则安装部署大多数是版本问题。如果在项目测试的话,最好在IOS系统电脑搭建IOS和android两套环境,这样一台机子就搞定了,在IOS搭建的android跟windows方法差不多,这里重点讲搭建IOS的appium环境。
一、环境准备:
需要安装的工具清单如下:
1.jdk11.0.2 (64位)
2.xcode:10.1 (下载对应的MACOS系统版本:https://developer.apple.com/download/more/)
3.python:3.6 (下载地址:https://www.python.org/)
4.macOS:10.14.3
5.Node.js:node-v10.15.1-x64 (下载地址:https://nodejs.org/en/download)
6.appium-desktop :1.8.2 (下载地址:https://github.com/appium/appium-desktop/releases)
7.Appium-Python-Client
- java安装
先进入根目录输入vim ~/.bash_profile
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home
export JAVA_HOME
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
重新引入生效:source ~/.bash_profile
查看更改后的JAVA_HOME路径:echo $JAVA_HOME
- brew安装
brew是mac上一个软件管理工具,通过它可以在终端输入命令安装各种软件包
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
检查homebrew是否安装:brew -v
- 检查git是否安装
$ git --version
git version 2.19.0
- 安装carthage
brew install carthage
验证:carthage version,查看版本
- 安装 libimobiledevice (真机测试必装)【(查看当前连接此电脑的设备中的信息、log,调试设备,git submodules的依赖,
brew install -HEAD libimobiledevice
验证:将真机连接在mac上,命令行输入idevice_id -l,如果出现该设备的udid,则说明配置成功能够正常识别了。
查看真机的设备名字:idevicename -d
查看所有的模拟器和真机:instruments -s devices
- 安装 iOS-deploy (真机测试需要)【可以用来安装卸载ios应用,iOS10,真机必装】
brew install ios-deploy
- 安装xcode
从App Store获取xcode的工具并安装
- 安装node.js
直接官网下载安装
- 安装Appium-Python-Client
pip3 install Appium-Python-Client
- 安装appium-doctor
npm install -g appium-doctor
使用appium-doctor 检查Appium iOS环境环境:appium-doctor --ios
如果出现opencv4nodejs、fbsimctl、applesimutils、ffmpeg、ios-webkit-debug-proxy失败信息,可通过如下手动安装即可:
安装ffmpeg
brew install ffmpeg
brew tap facebook/fb and brew install fbsimctl --HEAD
安装ios-webkit-debug-proxy
brew install ios-webkit-debug-proxy
安装opencv4nodejs:
使用npm代替brew:
brew install cmake
npm install -g opencv4nodejs
安装fbsimctl:
brew tap facebook/fb
brew install fbsimctl
安装applesimutil:
brew tap wix/brew
brew install applesimutil
二、Appium环境安装:
安装WebDriverAgent(WDA)
如果是模拟器测试,不需要安装WDA,如果用真机一定要安装WDA
前提:电脑必须安装了Carthage
注意,由于appium安装目录下自带的WebDriverAgent有BUG问题,需要从网上下载最新版本执行脚本。
先进到用户目录下:
cd ~
git clone https://github.com/facebook/WebDriverAgent.git
cd WebDriverAgent
mkdir -p Resources/WebDriverAgent.bundle
sh ./Scripts/bootstrap.sh
appium-xcuitest-driver
所在文件目录下:/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver下把自带的WebDriverAgent目录重命名为WebDriverAgent_bak。
执行命令:ln -s ~/WebDriverAgent WebDriverAgent (其中~/WebDriverAgent是源地址,后面的是目标地址)
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
,双击WebDriverAgent.xcodeproj
工程文件。进入WebDriverAgent 文件夹:cd
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
执行命令:xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=真机的udid‘ test
如果终端出现以下信息,表示编译 OK
Testing failed:
Early unexpected exit, operation never finished bootstrapping - no restart will be attempted
** TEST FAILED *
这个时候iphone多了一个WebDriverAgentRunner的app,如下图所示:
在手机通用-》描述文件设置信任证书,终端再重新执行xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=真机的udid‘ test进行验证环境。
验证一下WDA是否运行成功,因为有些国产的iPhone设备通过手机的IP和端口还不能访问,此时需要将手机的端口转发到Mac上,终端输入:iproxy 8100 8100进行端口转发。
浏览器输入:http://localhost:8100/status,返回一串json即证明成功
真机命令行启动wda:
控制台切换到wda的文件夹目录下,运行:/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=(你的id) USE_PORT=8100 test(id填你自己的uid)
执行:iproxy 8100 8100
摸拟器的命令行启动wda:
控制台运行:/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/
WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=A2C61397-E627-422E-87D3-8745C3E4F927 USE_PORT=8100 test(id填使用的模拟器uid)
到此为止,真机环境搭建完成,接下来就是可以配置appium信息,写测试脚本跑自动化了。
四、安装IOS摸拟器
打开已经安装好的xcode(位于/Applactions/Xcode),如图
选择Create a new Xcode project,按下图操作:
选择摸拟器:
如果需要其它,还可点击Add Additional Simulators下载摸拟器版本。
最后,点击左侧三角形运行,出现打开摸拟器,会多出test的app图标,如下图:
如查看udid方法如下图左边的Devices是查看真机,右边的Simulators是查看摸拟器信息。还可通过命令instruments -s devices查看所有的真机和摸拟器。
备注:在真机上是安装.ipa的包,在模拟器上是安装.app的包。
这是两种不同的打包方法,也就是说从appstore这种渠道下载的.ipa是无法安装到模拟器上的,必须要找你们开发专门针对iOS模拟器打个模拟器的包,后缀是.app 。
五、APPiumDesktop的环境真机和摸拟器参数配置
a、在真机上测试时,需要在AppiumDesktop新增udid、xcodeOrgld和xcodeSigningld等字段属性。xcodeOrgld是指开发者账号id,可在https://developer.apple.com/account的左侧的Memeber ship找到,或者在xcode账号管理里。
如下图参考:
b、摸拟器配置如下图所示:
备注:如上图真机和摸拟器已经有安装好的被测app软件,可把参数app属性改为bundleId,此项相当于android的里面的app包名。如果想看app的bundleId,只需要安装了ideviceinstaller工具就可以了,然后执行 ideviceinstaller -l 就可以将手机安装的app列出。
如下图公用的Capability参数:
其它更多的参数参考请进入:https://blog.csdn.net/ljl6158999/article/details/80594521
六、APPium代码启动
参考如下图启动摸拟器执行用例脚本自动化测试示例代码:
Appium工作原理
1、appium是基于webdriver 协议,appium ios封装了apple的Instruments框架,用了里面的UIAutomation,Client是我们编写的 webdriver脚本,中间是appium启动server(默认监听 4723 端口 ),appium server调用instruments.js启动一个 socket server ,同时分出一个子进程运行instruments.app 将bootstrap.js(一个 UIAutomation 脚本)注入到 devices用于和外界进行交 ,最后 Bootstrap.js将执行的结果返回给appium server, appium server再将结果返回给appium client 。
2、appium使用的是UIAutomator框架,我们在client客户端编写测试脚本运行,调用的是webdriver接口,appium server接收到我们client发送过来的命令去调用UIAutomator,把命令转换后去实现,Bootstrap将执行的结果返回给appium server ,最后由Appium server再将结果返回给client端。