Appium+python 自动化测试
一.python3安装
官网下载即可 python官网下载地址
务必记住安装目录,如果忘记在哪里安装的,可以在开始菜单中找到Python的文件夹,右键打开文件位置即可
二.Appium库的安装
进入到Python安装目录,找到名为Scripts的文件夹,进入文件夹,空白处shift+右键 选择“从此处打开命令窗口” ,输入:
pip install Appium-Python-Client
回车,等待安装完成即可
三.jdk8的安装
官网下载安装即可,JDK8官方下载地址
四.Android SDK安装
这里选择安装Android Studio 自带SDK免折腾 ,Android Studio官方下载地址
需要自带的模拟器可以进行勾选,之后我们会安装其他模拟器,可以不勾选
选择需要安装到的盘符,默认为C盘,这里改到了D盘
之后一直下一步安装即可
SDK的安装,可能是我安过的原因没进入定制页面,所以这里从设置进入后,选择的Android SDK-点击Edit-进入编辑页面
如果没安装默认勾选,然后Next等待安装完即可
记住SDK目录地址,之后会用到
五.Appium工具的安装
Appium下载地址.
直接安装即可
安装完成后打开appium,host和port默认即可,点击编辑按钮
填写好对应地址后,save and Restart ,
点击 启动服务器
六.模拟器的安装
这里选用夜神模拟器,夜神模拟器下载地址
下载安装即可
文件替换及配置
(1)打开模拟器的安装目录,进入到bin目录
(2)把第三节里安装好的Android SDK里的adb.exe文件,复制到该目录覆盖掉该目录已存在的adb.exe文件
(3)删掉该目录的nox_adb.exe文件,再复制一份adb.exe并重命名为nox_adb.exe
(4)启动模拟器
(5)在当前目录shift+右键,打开控制台,执行nox_adb.exe connect 127.0.0.1:62001
,然后执行adb devices
,提示以下信息证明操作成功
这里需要注意每次重启模拟器都需执行本步骤
(6)装入测试用的apk
(7)继续在刚刚的控制台窗口里输入aapt dump badging apk的绝对路径
(例如:C:\Users\Administrator\Desktop\20200628\XXXXXXXXX.apk),
记录下以下两个名称,与脚本中的
appPackage
,appActivity
相对应
七.定位元素
详细的元素定位教程很多,这里就不再进行细写
在模拟器中打开需要定位元素的APP
在Android SDK目录下找到tools文件夹,进入后打开名为 uiautomatorviewer.bat的文件, 点击上方第二个图标获取屏幕元素
接下来只要选中需要操作的页面元素,右侧就会展示出你所需要的元素定位数据,需要注意的是切换页面的话需要重复之前的操作 再次对页面进行获取
八.编写脚本生成报告
1.创建测试用例目录testcase,在该目录下创建test_app.py文件
import time
import unittest
from appium import webdriver
class MyTests(unittest.TestCase):
# 测试开始前执行的方法
def setUp(self):
desired_caps = {'platformName': 'Android', # 平台名称
'platformVersion': '5.1.1', # 系统版本号
'deviceName': '127.0.0.1:62001', # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
'appPackage': 'com.kuaichengwuliu.driver', # 之前记录下的 apk的包名
'appActivity': 'com.kuaichengwuliu.driver.guide.GuideActivity', # 之前记录下的 activity 名称
"automationName": "UiAutomator1" # 这个很重要很重要Android 5是比较老的版本,使用的是 UIAutomator1,新安卓系统使用 UIAutomator2,可能新版本的 appium 默认使用了 2 吧。所以新版本的 appium 在使用时候在开启 inspector 的时候要多传一个参数automationName=UiAutomator1这样最终就可以正常开启!
}
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 连接Appium
self.driver.implicitly_wait(8)
def test_calculator(self):
time.sleep(5)
self.driver.find_element_by_id("com.kuaichengwuliu.driver:id/function_btn").click() # 老板们自由发挥了
time.sleep(5)
# 测试结束后执行的方法
def tearDown(self):
self.driver.quit()
2.创建run.py文件
import os
import time
import unittest
from HTMLTestRunner import HTMLTestRunner
test_dir = './testcase'
discover = unittest.defaultTestLoader.discover(start_dir='./testcase', pattern="test*.py")
if __name__ == "__main__":
report_dir = './test_report'
os.makedirs(report_dir, exist_ok=True)
now = time.strftime("%Y-%m-%d %H-%M-%S")
report_name = '{0}/{1}.html'.format(report_dir, now)
with open(report_name, 'wb')as f:
runner = HTMLTestRunner(stream=f, title="测试报告", description="简单的一次测试")
runner.run(discover)
3.生成测试报告,并打开
需要报告模板或其他资料的可以加QQ交流群:72598961 (个人交流群非培训群)