首页 > 编程语言 >python+appium+unittest做app自动化测试

python+appium+unittest做app自动化测试

时间:2024-04-22 17:23:26浏览次数:19  
标签:__ appium python unittest caps desired test app

1.需要安装一些列的软件:

(1)java

(2)android sdk:  https://www.cnblogs.com/chenxiaomeng/p/16544481.html

(3)Appium Server GUI

(4) Appium Inspector  (3和4老版本是一个)

2.打开Appium Server GUI

直接点击startServer即可,使用默认配置

 3.打开 Appium Inspector

remote path需要修改成/wd/hub,查看连接设备的安卓版本号,使用adb device查看设备名称,写上对应的包名和启动名称,可以用adb am start执行看看,如下:

 至于automationName写UiAutomator2还是UiAutomator1,需要根据你的安卓版本来定,【1不行就试试2,或者百度下】

 然后点击右下角的‘start session’就可以打开会话,连接到app的功能页面,也可以在pc上看到安卓上的app的页面,然后就可以使用id或者text或者xpath之类的方式查找元素并点击

3.python代码

from appium import webdriver
import unittest

class SimpleAppiumTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        server_url = 'http://localhost:4723/wd/hub'
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '8.1.0'
        desired_caps['deviceName'] = '2c7c688a'
        desired_caps['appPackage'] = 'com.hhh.aaa.xxx.test'  # 应用的包名
        desired_caps['appActivity'] = 'com.hhh.aaa.xxx.test.MainActivity'  # 应用的主Activity
        cls.driver = webdriver.Remote(server_url, desired_caps)

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def test_find_and_click_element(self):
        # 假设有一个id为my_button的按钮
        button = self.driver.find_element_by_id('com.hhh.aaa.xxx.test:id/apiCastBtn')
        button.click()
        self.assertTrue(True, "Button click action performed")

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(SimpleAppiumTest)
    unittest.TextTestRunner(verbosity=2).run(suite)

这里你可能会遇到一个desired_caps的报错:

AttributeError: 'NoneType' object has no attribute 'to_capabilities'

这是因为Appium-Python-Client版本太高导致的,命令行降低版本即可,pycharm也需要需要降低版本,参考:https://blog.csdn.net/qq_63010259/article/details/133905117

4.执行测试

上面的python代码我们定义文件名为appiumtest.py,执行自动化测试时,只要时以test开头的case都会执行,可单个执行,也可全部执行

在cmd命令行输入:python appiumtest.py 

结果:

表示test_find_and_click_element这个用例执行通过

 5.可以添加其他cast,只要是test开头的都会执行,另外可以尝试生成好看一点的测试报告

最后部分代码稍微改良下就可以得到一个简陋版本的测试报告:

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(SimpleAppiumTest)
    with open('test_result.txt','w',encoding='utf-8') as tf:
        unittest.TextTestRunner(verbosity=2,stream=tf).run(suite)

当前目录下会生成一个test_result.txt的文件,记录了case的执行情况,如下:

 

标签:__,appium,python,unittest,caps,desired,test,app
From: https://www.cnblogs.com/zndxall/p/18151019

相关文章

  • python监控MongoDB服务进程,故障钉钉告警
     服务器1xx.168.8x.77#!/usr/bin/python#!_*_coding:utf-8_*_importosimportsysimporttimemongo_ip='192.168.xx.77'ports=['x001','x002']defport(ip,port):  response=os.popen("tcping %s%s|grepopen|awk-F'&......
  • 在Python中的for循环
    在Python中的for循环for循环:用于遍历序列(如列表、元组、字典、集合或字符串)或其他可迭代对象。pythonforiinrange(10):#这将循环10次,i的值从0到9print(i)while循环:当给定条件为真时,重复执行代码块。pythoni=0whilei<10:#这将循环10次print(i)i......
  • python 多并发
    多并发实现1#!/usr/bin/python2#-*-coding:utf-8-*-34"""5@File:.py6@Description:7@Time:2024/04/2210:00:008@Author:9@Version:1.010@Contact:[email protected]"""1213impor......
  • Python实现下载文件的三种方法
    下面来看看三种方法是如何来下载zip文件的:方法一: importurllibprint"downloadingwithurllib"url='http://www.jb51.net//test/demo.zip'urllib.urlretrieve(url,"demo.zip") 方法二: importurllib2print"downloadingwithurllib2"u......
  • 使用pyppeteer 下载chromium 报错 python pyppeteer 调用谷歌翻译api
    https://registry.npmmirror.com/binary.html?path=chromium-browser-snapshots/Win_x64/手动下载安装包 修改文件C:\Users\luyan\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyppeteer\chromium_downloader.py #修改这段代码defdownload_chromium()-......
  • Python实现批量下载文件的示例代码
    前言下载文件是我们在日常工作中常常要做的一件事情。当我们需要从互联网上批量下载大量文件时,手动一个一个去下载显然不够高效。为了解决这个问题,我们可以使用Python编写一个批量下载文件的脚本,让它自动帮我们下载文件。同时,为了避免下载过程中被网站禁止访问,我们也可以运用代理......
  • Python数据容器
    1.容器定义:容纳多份数据的数据类型。Python的数据容器可以理解为C++中的数据结构,这些数据结构的方法多为“增删改查”。容器类型:列表、元组、字符串、2.列表list列表可理解为数组,下标从0开始。定义定义代码name_list=['zhangsan','lisi','wangwu']#字......
  • 接口自动化Python+requests踩坑记录
    问题描述同一个接口,传参相同,用postman,jmeter等接口工具都能正常访问,后台也能正常返回数据,但是用requests.post()调用就会返回400jmeter传参以及响应这是一个登录接口,如图所示的传参,是可以正常登录的  postman传参以及响应可以看到,两个工具的传参不一样,但是也是同样可以正......
  • ArcPy自动绘制大量地图并设置地图要素:Python
      本文介绍基于Python语言中ArcPy模块,实现ArcMap自动批量出图,并对地图要素进行自定义批量设置的方法。1任务需求  首先,我们来明确一下本文所需实现的需求。  现有通过Python基于Excel数据加以反距离加权空间插值并掩膜图层所绘制的北京市在2019年05月18日00时至23时(其中......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-38-如何截图-下篇
    1.简介这个系列的文章也讲解和分享了差不多三分之一吧,突然有小伙伴或者童鞋们问道playwright有没有截图的方法。答案当然是:肯定有的。宏哥回过头来看看确实这个非常基础的知识点还没有讲解和分享。那么在这个契机下就把它插队分享和讲解一下。Playwright提供了一个截屏的API:page.......