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小时左右的时间,请耐心等待!

下图是一位大神整理的SDK图片描述很详细,供参考,如下图所示:

 三、安装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是源地址,后面的是目标地址)
 
三、编译WebDriverAgent
进入目标文件/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent,双击WebDriverAgent.xcodeproj工程文件。
1、编译WebDriverAgentLib
 
2、编译WebDriverAgenRunner
 
3、App ID要保持一致性。

进入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列出。Appium每次运行,不安装APP,就在Capabilities增加参数属性noReset设置为True。

如下图公用的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端。

python_Appium测试环境搭建的更多相关文章

  1. Linux测试环境搭建的学习建议

    随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基 ...

  2. 总结Selenium自动化测试方法(二)测试环境搭建

    (接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...

  3. https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题

    一:什么是https SSL(Security   Socket   Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安 ...

  4. 【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题

    正需要这个,写的很好,就转过来了 转自: http://www.cnblogs.com/naniannayue/ 一:什么是https SSL(Security   Socket   Layer)全称 ...

  5. 【转2】Appium 1.6.3 在Xcode 8 (真机)测试环境搭建 经验总结

    Appium 1.6.3 在Xcode 8 (真机)测试环境搭建经验总结 关于 Appium 1.6.3 在Xcode 8, 1真机上环境搭建问题更多,写此文章,供大家参考,让大家少走弯路. 在开始i ...

  6. 【转1】Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结

    Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结 关于 Appium 1.6.3 在Xcode 8, 10.2 的iOS模拟器上的问题很多,本人也差点放弃 ...

  7. Android测试环境搭建

    Android测试环境搭建 一.操作系统 使用Win7_64位操作系统.(可以用其他的系统,下面都是针对Win7 64位进行操作) 二.安装JDK 运行jdk-6u45-windows-x64.exe ...

  8. USDT(omniCore)测试环境搭建

    一.测试环境搭建. 注:由于window版本的omni出现同步不了的问题,推荐使用linux系统进行usdt测试链的搭建. 1.下载omnicore: wget https://bintray.com ...

  9. igmp组播测试环境搭建

    2.4G无线组播测试环境搭建: (1)组播源: VLC 或者 pixstream (2)无线: 2.4G AP (3)客户端PC: VLC播放器 有线直连 无线2.4G PC(组播源pixstream ...

随机推荐

  1. Android中View绘制优化

    1.优化布局层次 http://www.2cto.com/kf/201209/154108.html 2.使用<include />标签复用布局文件 http://www.2cto.com ...

  2. pg删除账号,权限的回收问题

    在pg中删除账号时,一般不能直接删除账号,要先将该账号上所有的对应权限收回,但往往这一步是比较繁琐的,可能当时赋权的对象类型很多,对象也比较多,虽然可以通过sql按照类型来收回针对整个schema的所 ...

  3. Linux可执行文件后缀问题

    一般来说,可执行文件没有扩展名. Linux不根据扩展名判断文件类型,而是根据文件的内容来判断.所以扩展名的作用是帮助人来识别文件,对于Linux系统本身来说没有什么用处. .sh结尾表示是shell ...

  4. Eclipse开发java程序里Test用不了,怎么导包?

    1.右键项目Build Path->Add External JARs,选择要导入的jar包即可: 2.建立方法,引入junit. 3.ok

  5. nginx启用stream日志配置文件

    主配置文件/etc/nginx/nginx.conf增加内容: stream { log_format proxy '$remote_addr [$time_local] ' '$protocol $ ...

  6. python pop()

    pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. obj -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值 l ...

  7. canvas 入门

    <canvas>是HTML5新增的,是可以使用脚本(JavaScript)在其中绘制图像的HTML元素. canvas是由HTML代码配合高度和宽度属性而定义出的可绘制区域,JavaScr ...

  8. Shell记录-Shell脚本基础(四)

    while循环,使您能够重复执行一组命令,直到某些条件发生.它通常用于当你需要反复操纵的变量值. 语法 while command do Statement(s) to be executed if ...

  9. [转载]如何做到 jQuery-free?

    http://www.ruanyifeng.com/blog/2013/05/jquery-free.html jQuery是现在最流行的JavaScript工具库. 据统计,目前全世界57.3%的网 ...

  10. Linux学习5-线程

    线程 1.1什么是线程? 在一个程序中的多个执行路线就叫做线程(thread).更准确的定义是:线程是一个进程内部的一个控制序列.   要搞清楚fork系统调用和创建新线程之间的区别.当进程执行for ...