⾃动化测试-Appium+Python史上最全最简环境搭建步骤⼀,为什么是Appium
借⼀张图:
1.1 Appium优点
l 开源
l 跨架构:NativeApp、Hybird App、Web App
l 跨设备:Android、iOS、Firefox OS
l 不依赖源码
l 使⽤任何WebDriver 兼容的语⾔来编写测试⽤例。⽐如 Java, Objective-C, JavaScript with Node.js, PHP, Python, Ruby,C#, Clojure, 或者 Perl.
l 不需要重新编译APP
1.2 Appium理念
l 你⽆需为了⾃动化,⽽重新编译或者修改你的应⽤。
l 你不必局限于某种语⾔或者框架来写和运⾏测试脚本。
l ⼀个移动⾃动化的框架不应该在接⼝上重复造轮⼦。(WebDriver)
l ⽆论是精神上,还是名义上,都必须开源。
1.3 Appium架构
借⼀张图:
iOS: 苹果的UIAutomation
Android 4.2+: Google的UiAutomator
Android 2.3+: Google’s Instrumentation. (由单独的项⽬Selendroid提供⽀持 )
Appium 1.6版本以上增加了UiAutomator2
为了满⾜上⾯跨平台,把这些三⽅框架封装成⼀套API —— WebDriver Api(客户端到服务端的协议)
nodeselector事实上 WebDriver 已经成为 web 浏览器⾃动化的标准,也成了 W3C 的标准 —— ,所以Appium在原有基础上扩充了移动⾃动化相关的API。
投资 WebDriver 意味着你可以押宝在⼀个已经成为标准的独⽴,⾃由和开放的协议。你不会被任何专利限制。
核⼼架构:Appium使⽤C/S架构,运⾏时候Service端会监听Client端发送的命令,接着在移动设备上执⾏这些命令,然后将执⾏结果放在HTTP 响应中返还给客户端。
基于这架构可以做什么?
可以⽤任何实现了该客户端的语⾔来写测试代码
可以把服务端放在不同的机器上
可以只写测试代码,然后利⽤类似Testin 云服务解决⽅案来解释命令.
⼆,Appium环境搭建
需要⽤到的软件如下:
1. jdk-8u121-window(32位的就下载32位的,64位的就下载64位的)。
2.-sdk_r24.
3.4-windows(下载这个adt-bundle-windows-x86-20140624)
3.:(V3.6也可以)
4.appium:1.4.13.1
5.:node-v4.4.7-x64
6.Appium--Client
7.pycharm
其中1-5是可以先下载的,6则需要在完成前⾯的五个步骤后才进⾏,7为可选Ide⼯具。
2.1 JDK
下载好jdk直接点下⼀步就可以了,然后开始配置变量,参考如下路径:
注意:
classpath值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
path值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;是有“.”这个符号的不能漏掉
按快捷键win+r,在运⾏内输⼊cmd,并输⼊,回车,如果出来的是些⽤法中⽂,那说明这是正确的,在接下来输⼊javac,回车,如果出现些⽤法中⽂,说明是环境变量配好了。
2.2 下载SDK
直接下载adt/Android studio完美集成,下载好后并进⾏解压,然后开始配置三个变量:
1.解压adt集成包到合适的路径下⾯,⽐如D:\adt\
2.设置环境变量
配置环境变量,
设置ANDROID_HOME系统变量为你的 SDK路径,并把tools和platform-tools两个⽬录加⼊到系统的Path路径⾥。
eg:添加变量名:ANDROID_HOME 变量值: D:\adt\sdk
并把这句添加到 %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools记得要加上";"
配置完环境后,可以在运⾏cmd后输⼊ adb(能看到当前版本号),再输⼊android-h(tools⽬录下的,如果出来⼀堆⽂字则是可以的)
2.3 安装python
进⼊官⽹或百度下载python下载好后安装到所需安装路径,如在D盘中新建⼀个python⽂件夹,如d:\python34
安装完成后将D:\python和D:\python\Scripts,添加到环境变量path下
打开cmd输⼊python,出现版本号,然后输⼊print("helloworld!")这样python就是安装好了。
2.4 安装
进⼊官⽹地址并下载:/en/download/
下载后⼀路傻⽠式安装,安装完成后,运⾏cmd,输⼊node –v查看版本号,然后输⼊npm
2.5 安装appium服务端
⽅法⼀:进⼊官⽹地址并下载
/appium/appium.app/downloads/
完整安装带UI的appium,可以从官⽹直接下载dmg(mac)或者zip(Windows),运⾏⾥⾯的app即可。
appium安装好后:
到这个⽂件安装⽬录D:\appium\node_modules\.bin
将上⾯的地址添加到环境变量path下;
⽅法⼆:node.js包管理安装
npm install -g appium
appium –v
npm install -g appium-doctor
appium-doctor
命令安装的appium是控制台程序,没有UI界⾯。可到github搜索appium的appiumDesktop项⽬中下载最新版本
但是由于GFW关系,此⽅法会在安装过程中卡住或是直接报错,解决办法:挂VPN代理FQ;为了满⾜国内开发⼈员的需要,淘宝npm镜像可替代官⽅版本。打开输⼊:
npm install -g appium --registry=registry.
⽅法三:百度pan
直接下载appium的GUI界⾯安装包,下载地址:,Windows最新版本是AppiumForWindows_1.4.16.1.zip,MacOS最新版本
是appium-1.5.3.dmg。笔者以windows为例,下载的AppiumForWindows_1.4.16.1.zip 进⾏解压安装,启动appium,弹出错误提⽰框
很容易在⽹上查到错误原因,因为node.js需要.NETFramework框架的⽀持,所以在这⾥需要安装net framework4.5。
当 framework 4.5安装完成,再次启动Appium,
打开appium
appium安装好后:
到这个⽂件安装⽬录D:\appium\node_modules\.bin
将上⾯的地址添加到环境变量path下;
Tips:检查appium的所有需求环境
npm install -g appium-doctor
appium-doctor
打开cmd,输⼊appium-doctor,检查环境是否OK,出现allchecks were successful,说明环境OK;
2.6 安装Appium-Python-Client
进⼊cmd 输⼊:pip install Appium-Python-Client。通过Python安装等待安装完成。
如果从官⽅的资源库下载Appium-Python-Client失败,请⾃⾏更换下载源重新下载。在命令⾏输⼊"pip install Appium-Python-Client -ipypi.douban/simple"重试
Tips:检查selenium版本3.3.3
安装 Appium-Python-Client 的同时会安装⼀个selenium模块.试着进⼊python3交互命令⾏,然后执⾏下⾯命令:
import selenium
selenium.__version__
如果你显⽰的 selenium 版本是当前最新版本3.3.3的话,那么最好使⽤下⾯命令将版本装成3.0.2,⽹传某些Api的话会报错。
pip3 install -I selenium==3.0.2
2.7 安装pycharm
安装流程参考:
需要激活可以购买正版或⽹上搜索激活码。
三,简单⾃动化测试⽤例编写
3.1 新建Python unit test⽂件
新建Python unit test类型⽂件,对test类补充setup及teardown函数
对类MyTestCase添加setUp函数(这是测试⽤例执⾏前的准备动作,负责告诉appium监听那个端⼝、与那个⼿机连接、安装那个应⽤等信息)
对类MyTestCase添加TearDown函数(这是测试⽤例执⾏结束后的动作,可以执⾏保存执⾏结果等操作)
3.2 编写测试⽤例
简单实例点位两个控件,执⾏点击事件
# MyTestCase.py
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import unittest
import selenium
import time
from appium import webdriver
class MyTestCase(unittest.TestCase):
@classmethod
def setUp(self):
# super().setUp()
print('selenium version = ', selenium.__version__)
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4'
desired_caps['deviceName'] = '192.168.1.54:5555'
desired_caps['appPackage'] = 'com. xx'
#desired_caps['app'] = 'F:// debug.apk'
desired_caps['appActivity'] = 'MainActivity'
self.driver = webdriver.Remote('localhost:4723/wd/hub', desired_caps)
def test_something(self):
print('test_something click ------ ')
# xpath:
time.sleep(2)
self.driver.find_element_by_xpath("//android.widget.ListView/android.widget.TextView[contains(@text,'测试')]").click()
# uiautomator -UiSelector:
# name⽅式在1.5版本后已废除,能到接⼝,不可使⽤,使⽤new UiSelector().text替代
# self.driver.find_element_by_android_uiautomator("newUiSelector().text(\"测试\")").click()
# class_name - child:
# items =self.driver.find_elements_by_class_name('android.widget.TextView')
# items[1].click()
# id:
time.sleep(2)
self.driver.find_element_by_id('com.hisense.vod:id/test_video_resize').click()
@classmethod
def tearDown(self):
time.sleep(5)
print('tearDown ------ ')
self.driver.quit()
if __name__ == '__main__':
unittest.main()
四,踩坑
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论