Appium appium+Android+selenium+python web 自动化 / 手机自动化

前期准备

1、windows 操作系统
2、python3.5
3、selenium
4、chrome 浏览器
5、chrome 浏览器驱动
6、pycharm
7、appium
8、JDK
9、SDK
10、安卓模拟器(genymotion)或真机
11、任意 apk
12、使用安卓模拟器 genymotion 需要 virtual box
(个别的会补充,软件版本自己随意)

一、知识补充(1)

Appium 介绍

Appium 是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium 支持 iOS、Android 及 FirefoxOS 平台。Appium 使用 WebDriver 的 json wire 协议,来驱动 Apple 系统的 UIAutomation 库、Android 系统的 UIAutomator 框架。Appium 对 IOS 系统的支持得益于 Dan Cuellar’s 对于 iOS 自动化的研究。Appium 也集成了 Selendroid,来支持老 android 版本。

Appium 进行自动化测试的两个好处

(1) Appium 在不同平台中使用了标准的自动化 APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。这里,跨平台的意思是指可以在不同的系统上用相同的方式编写测试脚本,而不是指用于 Android 系统的测试脚本可以完全不用修改的应用于 iOS 系统上。事实上,Android 和 IOS 应用几乎需要独立的进行编写。
(2) Appium 支持 Selenium WebDriver 支持的所有语言,如 java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者 Perl 语言,更可以使用 Selenium WebDriver 的 Api。Appium 支持任何一种测试框架。如果只使用 Apple 的 UIAutomation,我们只能用 javascript 来编写测试用例,而且只能用 Instruction 来运行测试用例。同样,如果只使用 Google 的 UIAutomation,我们就只能用 java 来编写测试用例。

Appium 的系统需求

Android 自动化测试可以在 Windows、Mac、Linux 上进行,需要安装 Android SDK,node 等工具。而 iOS 的自动化由于需要 Xcode 的支持,只能在 Mac 上运行,需要安装 Xcode,node 等工具。此外,由于 appium ios 自动化的底层使用的是 UI Automation,因此在使用 appium 之前必须搭建 IOS 开发环境。

二、测试环境搭建:

windows7+android+appium+python+selenium(mac 的未涉及,如果以后涉及,可以补充)
我的测试环境搭建时,考虑到 web 自动化测试,所以 selenium 也有。

selenium 自动化环境部署(英文路径)

1、python 的安装:
如果以前是 python2,现在想用 python3,可以卸载 python2,步骤如下:
(1)先卸载电脑上原有的 Python2 的程序,选择控制面板 --- 程序 -- 搜索 py---卸载所有程序
(2)我的电脑 --- 属性 --- 高级系统设置 --- 环境变量 --- 系统变量---path---编辑 --- 删除原有的 Python 环境变量:C://Python2.7;
(3)C 盘中---Python27 文件夹也删除
2、安装新的 Python3.5.2
(1)点击 python-3.5.2-amd64.exe---勾选最下面的 add python3.5 to path---然后一路下一步即可
(2)验证 Python3 安装是否成功:cmd---输入 python,显示 help 则表示成功
(3)继续验证 Python3:去我的电脑 --- 属性 --- 高级系统设置 --- 环境变量 -- 用户变量--Path-编辑 -- 其中显示 Python 的位置即可
3、安装 selenium
(1)方式:一:将 selenium 压缩包解压到 C:\Users\fanqie\AppData\Local\Programs\Python\Python35\Lib\site-packages 下
(2)方式二:在联网的情况下,输入 pip install selenium==2.53.6
(3)验证 selenium 安装是否正确:
开始菜单 -- 打开 Python 的 IDLE 集成环境,输入 from selenium import webdriver ,什么都不显示表示成功
注意:
1.如果上面解压路径找不到 adddata 文件夹,可以在查看 -- 勾选隐藏的项目,将隐藏的文件夹显示出来即可


2.解压文件夹的时候只留一层即可,不能两层
4、安装浏览器 chrome
(1)使用 chrome 浏览器,一路下一步安装
(2)验证:继续在刚才 Python 的 IDLE 集成环境下输入:driver = webdriver.Chrome() ,会弹出谷歌浏览器,表示使用浏览器正确
5、安装浏览器 chrome 驱动
(1)将谷歌的驱动 chromedriver.exe 复制到 Python 的环境变量路径下。(环境变量的位置在我的电脑 -- 属性 -- 高级系统设置 -- 环境变量中寻找)
例如:C:\Users\fanqie\AppData\Local\Programs\Python\Python35
注意:
1.浏览器的驱动要对应浏览器的版本(网上也能查到对应的表格)
2.selenium 要使用的浏览器驱动官网下载地址:http://www.seleniumhq.org/download
6、安装 pycharm
(1)一路下一步后,选择 activation code,输入激活码
(2)pycharm 激活码:请网上搜索
以上是 selenium+python 的环境配置,可以测试 web。
--------------华丽丽的分割线--------------

appium 自动化环境部署(英文路径)

1、appium 安装,appium-installer(1.4.16.1 产品版本号),选择英文,一路下一步。如果提示需要安装.net framework4.0 则安装.net framework4.0;安装完 4.0 如果提示需要安装.net framework4.5 则安装 4.5,然后再次点击 appium.exe,直到进入 appium 页面。


2、JDK 部署,安装 JDK.exe,一路下一步即可。安装完毕后,需要配置环境变量如下:
(1)JAVA_HOME:这个也是 jdk 的安装路径,将路径 C:\Program Files\Java\jdk1.8.0_112 复制,然后右击我的电脑 -- 高级系统设置 --- 环境变量 -- 系统变量 -- 新建,变量名为 JAVA_HOME,变量值粘贴刚才的地址即可。
(2)Path:%JAVA_HOME%\bin
(3)CLASSPATH:做 web 项目才需要配置 classpath 手机可以不用配置(这个不用配置)
3、SDK 配置,解压缩 SDK 压缩包到 D 盘根目录,并且不用新建文件夹,直接给现有文件夹重命名为 adt-bundle-windows-sdk(里面文件包含 3 个,如下图)


这里你也可以按照你的思路安装,我是有现成的压缩包就直接用了。
放好后,进行 SDK 的环境变量配置:(多个环境变量之间用英文的分号隔开)
(1)ANDROID_HOME:也是 SDK 路径,复制 D:\adt-bundle-windows-sdk\sdk 路径,右击我的电脑 --- 高级系统设置 --- 环境变量 -- 系统变量,变量名为 ANDROID_HOME,变量值为复制的路径。
(2)tools:%ANDROID_HOME%\tools;
(3)platform-tools:%ANDROID_HOME%\platform-tools;
将(2)与(3)两个环境变量配置到 Path 下,并且用分号隔开。例如:
C:\ProgramData\Oracle\Java\javapath;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;
4、检验是否配置成功:
(1)在 cmd 下输入 adb 命了,有对应的提示输出。
(2)在 cmd 输入 android,调用 SDK manager。
5、appium 环境变量配置
Path:
(1)appium 安装路径:C:\Program Files (x86)\Appium
(2)appium 环境检测:C:\Program Files (x86)\Appium\node_modules.bin(说明这个位置:.bin 前面有一个反斜杠)
(3)appium 环境检测命令:appium-doctor


6、安卓模拟器安装
安卓模拟器有很多,这里使用 genymotion 的搭建。
(1)由于 genymotion 运行环境需要 virtual box,所以需要先安装 virtual box,双击 VirtualBox-5.0.20-106931-Win 一路下一步,始终信任你,进行安装。
(2)genymotion 的安装:一路下一步。
(3)将 Samsung Galaxy S4 - 4.4.4 - API 19 -1080x1920.rar 解压到非中文路径--D:\mobilevm 并双击 Samsung Galaxy S4 - 4.4.4 - API 19 - 1080x1920.vbox(virtualbox 软件只需启动一次),这里的手机系统百度自己下载,我是随便找的。
(4)启动 genymotion,查看列表中含有 api19 的安卓系统,将 virtualbox 关机即可
(5)启动安卓模拟器,选中 api19 的安卓系统,点击 star
(6)登录 genymotion,sign in,用户名和密码。
(7)appium 支持 android 版本,api17 及以上,4.4.2
(8)下载 android 模拟器版本,add---选择相应的模拟器进行下载。
7、python 环境搭建(如果之前在 selenium 下配置过 python 和 pycharm,那移动端这里可以省去步骤)
(1)python3.5.2 安装,一路下一步,配置环境 -- 右击我的电脑 --- 高级系统设置 -- 用户变量--PATH 变量下:C:\Users\fanqie\AppData\Local\Programs\Python\Python35\Scripts\;C:\Users\fanqie\AppData\Local\Programs\Python\Python35\(这是 2 个环境变量,中间用英文的分号隔开了)
以上变量是 2 个,一个是 python 的安装路径,一个是 python 工具包安装 setuptools,只是写在一起了。
8、Appium-Python-Client 安装及配置
https://pypi.python.org/pypi/pip/
下载 pip,并将它放到 python3.5 安装位置。
(1)打开 DOS 命令行,python3.5 安装位置 C:\Users\fanqie\AppData\Local\Programs\Python\Python35\pip-8.1.2,所以我要 cd 进入到这个位置,然后输入:python setup.py install 。
(2)C:\Users\fanqie\AppData\Local\Programs\Python\Python35\Scripts,cd 到这个目录后,输入:pip install Appium-Python-Client 。
安装成功后如下图显示:


9、搭建 app 环境,直接在安卓模拟器上安装一个豌豆荚下载 app 或者找你的项目 app。
10、DOS 命令下输入:appium,调用 appium。
11、appium 设置:点击机器人 icon,选择对应的模拟器版本 API 19,然后点击三角形的 icon,开始运行。


三角符号运行 appium 后,显示如下界面表示成功:


至此,windows+android+python+selenium 自动化测试环境搭建完毕。

三、来个小程序试试我们的环境:

也许你会看不懂,但是不要紧,先照着做,后面会解释给你听。
打开 pycharm,新建一个.py 文件,编写如下安卓自带的计算器自动化脚本:

#coding=utf-8
from appium import webdriver
from time import sleep

desired_caps = {}
desired_caps['platformName'] = 'Android'  
desired_caps['platformVersion'] = '4.4.4'  
desired_caps['deviceName'] = 'Android Emulator'  
desired_caps['appPackage'] = 'com.android.calculator2'  
desired_caps['appActivity'] = '.Calculator'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.find_element_by_name("1").click()
driver.find_element_by_name("5").click()
driver.find_element_by_name("9").click()
driver.find_element_by_name("delete").click()
driver.find_element_by_name("9").click()
driver.find_element_by_name("5").click()
driver.find_element_by_name("+").click()
driver.find_element_by_name("6").click()
driver.find_element_by_name("=").click()
driver.quit()

编写后保存,然后右击运行脚本,此时的安卓模拟器应该有运行结果,则表示正确。注意,platformVersion 的值可从 appium 界面上看到。
备注:程序来自从虫师的 cnblogs 博客。

四、知识补充(2)

adb 命令介绍

adb 的全称为 Android Debug Bridge,就是起到调试桥的作用。借助 adb 工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行 shell 命令等等。其实简而言说,adb 就是连接 Android 手机与 PC 端的桥梁,可以让用户在电脑上对手机进行全面的操作。如果你对其很感兴趣, 可以再自己搜索相关内容。

常用 adb 命令

备注:因为想诠释清楚命令的作用,所以格式所迫,会使用截图代替。
首先打开 DOS 命令行:

命令 解释
adb devices 列出当前连接的设备,获取设备的 id 和状态的用的
adb push/pull 用于 PC 端和设备端文件交互的操作

命令 解释
adb install/uninstall 安装或卸载应用。(安装是应用的名称,卸载是 apk 的包名)

五、浅谈之前的小程序

因为我知道你一定着急并好奇刚才的脚本是什么意思,这里先简单的说明下,后续的知识还需要你的自学。

#coding=utf-8   #编码格式
from appium import webdriver  #引入webdriver
from time import sleep  #引入sleep

# 定义初始化的属性信息
desired_caps = {}  
desired_caps['platformName'] = 'Android'  #设备系统
desired_caps['platformVersion'] = '4.4.4'  #设备系统版本
desired_caps['deviceName'] = 'Android Emulator'  #设备名称
desired_caps['appPackage'] = 'com.android.calculator2'  #包名,获得包名的方式有很多
desired_caps['appActivity'] = '.Calculator'  #Activity,获得的方式也很多
desired_caps['unicodeKeyboard'] = True  # 使用unicodeKeyboard的编码方式来发送字符串
desired_caps['resetKeyboard'] = True  # 将键盘给隐藏起来

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  #启动服务器地址,后面跟的是手机信息

driver.find_element_by_name("1").click()  #点击计算器中的1
driver.find_element_by_name("5").click()  #点击计算器中的5
driver.find_element_by_name("9").click()
driver.find_element_by_name("delete").click()  
driver.find_element_by_name("9").click()
driver.find_element_by_name("5").click()
driver.find_element_by_name("+").click()
driver.find_element_by_name("6").click()
driver.find_element_by_name("=").click()
driver.quit()  #退出

六、知识补充(3)

元素定位介绍

这里的东西其实很多很细,不详细讲,可网搜。
selenium--web:常用 8 种
driver.find_element_by_name()
driver.find_element_by_id()
driver.find_element_by_class_name()
driver.find_element_by_tag_name()
driver.find_element_by_link_text()
driver.find_element_by_partial_link_text()
driver.find_element_by_xpath()
driver.find_element_by_css_selector()

而手机(appium)则在 web 的 8 种基础上扩展了 3 个:
driver.find_element_by_accessibility_id()
driver.find_element_by_android_uiautomator()
driver.find_element_by_ios_uiautomation()

元素定位工具

具体使用可网搜,如有时间再补充。
web 端:
(1)firefox 浏览器的 firebug 插件
(2)Chrome 开发者工具(F12)
Android 端:
在 DOS 命令行下输入:uiautomatorviewer

七、Appium API 文档

这个文档在 TesterHome 就有,请自行前往。
Appium API 文档链接

八、项目工程的建立

项目结构

这里使用 pycharm。
第一,先建立项目:file---new project,输入项目名字。
第二,点击刚建立的项目名称,右击,new---directory,文件夹名字:data。
第三,点击项目名称,右击,new---directory,文件夹名字:screen。
第四,点击项目名称,右击,new---directory,文件夹名字:report。
第五,点击项目名称,右击,new---python package,文件夹名字:test_case。
第六,点击 test_case,右击,new---python package,文件夹名字:public;或者直接在项目下建立。

版权声明:
作者:babaaini
链接:https://reai.us/index.php/2021/10/02/appium-appiumandroidseleniumpython-web-%e8%87%aa%e5%8a%a8%e5%8c%96-%e6%89%8b%e6%9c%ba%e8%87%aa%e5%8a%a8%e5%8c%96/
来源:热爱
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>