Appium+python 自动化测试

  • 一.python3安装
  • 二.Appium库的安装
  • 三.jdk8的安装
  • 四.Android SDK安装
  • 五.Appium工具的安装
  • 六.模拟器的安装
  • 文件替换及配置
  • 七.定位元素
  • 八.编写脚本生成报告


一.python3安装

官网下载即可 python官网下载地址

python的android库 android python3_appium

务必记住安装目录,如果忘记在哪里安装的,可以在开始菜单中找到Python的文件夹,右键打开文件位置即可

python的android库 android python3_appium_02

二.Appium库的安装

进入到Python安装目录,找到名为Scripts的文件夹,进入文件夹,空白处shift+右键 选择“从此处打开命令窗口” ,输入:

pip install Appium-Python-Client

回车,等待安装完成即可

python的android库 android python3_python_03

三.jdk8的安装

官网下载安装即可,JDK8官方下载地址

python的android库 android python3_appium_04

四.Android SDK安装

这里选择安装Android Studio 自带SDK免折腾 ,Android Studio官方下载地址

python的android库 android python3_appium_05


需要自带的模拟器可以进行勾选,之后我们会安装其他模拟器,可以不勾选

python的android库 android python3_python的android库_06


选择需要安装到的盘符,默认为C盘,这里改到了D盘

python的android库 android python3_python的android库_07

之后一直下一步安装即可SDK的安装,可能是我安过的原因没进入定制页面,所以这里从设置进入后,选择的Android SDK-点击Edit-进入编辑页面

python的android库 android python3_appium_08

如果没安装默认勾选,然后Next等待安装完即可

python的android库 android python3_自动化测试_09

记住SDK目录地址,之后会用到

python的android库 android python3_appium_10

五.Appium工具的安装

Appium下载地址.

python的android库 android python3_API_11

直接安装即可

python的android库 android python3_自动化测试_12

安装完成后打开appium,host和port默认即可,点击编辑按钮

python的android库 android python3_python的android库_13


python的android库 android python3_python的android库_14

填写好对应地址后,save and Restart ,点击 启动服务器

python的android库 android python3_API_15

六.模拟器的安装

这里选用夜神模拟器,夜神模拟器下载地址 下载安装即可

文件替换及配置

(1)打开模拟器的安装目录,进入到bin目录

(2)把第三节里安装好的Android SDK里的adb.exe文件,复制到该目录覆盖掉该目录已存在的adb.exe文件

python的android库 android python3_appium_16


(3)删掉该目录的nox_adb.exe文件,再复制一份adb.exe并重命名为nox_adb.exe

python的android库 android python3_自动化测试_17


(4)启动模拟器

(5)在当前目录shift+右键,打开控制台,执行nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices,提示以下信息证明操作成功

这里需要注意每次重启模拟器都需执行本步骤

python的android库 android python3_python的android库_18

(6)装入测试用的apk

(7)继续在刚刚的控制台窗口里输入aapt dump badging apk的绝对路径(例如:C:\Users\Administrator\Desktop\20200628\XXXXXXXXX.apk),

记录下以下两个名称,与脚本中的

appPackageappActivity 相对应

python的android库 android python3_python_19

python的android库 android python3_自动化测试_20

七.定位元素

详细的元素定位教程很多,这里就不再进行细写

在模拟器中打开需要定位元素的APP

在Android SDK目录下找到tools文件夹,进入后打开名为 uiautomatorviewer.bat的文件, 点击上方第二个图标获取屏幕元素

python的android库 android python3_python的android库_21


python的android库 android python3_API_22


接下来只要选中需要操作的页面元素,右侧就会展示出你所需要的元素定位数据,需要注意的是切换页面的话需要重复之前的操作 再次对页面进行获取

八.编写脚本生成报告

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.生成测试报告,并打开

python的android库 android python3_自动化测试_23