python_Appium测试环境搭建

python_Appium测试环境搭建

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.0.1

8.夜神模拟器:6.2.6.3

二、安装jdk

1、在系统环境变量,新增JAVA_HOME为jdk安装路径:D:Javajdk1.8.0_181
2、在Path变量中增加:%JAVA_HOME%in;%JAVA_HOME%jrein
3、在CLASSPATH变量中增加:%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar

三、安装android-sdk

将下载的 Android SDK 解压指定的目录

在系统变量新建:ANDROID_HOME,对应变量值为:D:android-sdk(sdk安装路径)

path变量里面添加%ANDROID_HOME% ools和%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:ProgramsPythonPython36;D:ProgramsPythonPython36Scripts

四、安装.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 FilesNoxin输入命令: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-sdkplatform-tools)下的adb.exe文件复制到夜神模拟器的目录(D:Program FilesNoxin)下,将从SDK目录复制过来的adb.exe放在夜神目录下,同时复制一份改名为nox_adb.exe。

最后在cmd窗口进入夜神安装目录下D:Program FilesNoxin输入命令: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: est aobao.apk | findstr package(网上下载的taobao.apk文件)】
  • appActivity:启动栈  【在cmd窗口输入命令:aapt dump badging D: est aobao.apk | findstr launchable(网上下载的taobao.apk文件)】

在D:android-sdkuild-tools28.0.3目录下的cmd窗口输入aapt dump badging D: est aobao.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 ools目录下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:1.0.1

  • 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端。

原文地址:https://www.cnblogs.com/peanut-HS/p/13719094.html