百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

软件测试进阶之自动化测试——python+appium实例

off999 2025-07-28 19:39 3 浏览 0 评论

扼要:

1、了解python+appium进行APP的自动化测试实例;

2、能根据实例进行实训操作;


本课程主要讲述用python+appium对APP进行UI自动化测试的例子。appium支持Android、ios。本课程以Android为例。

学习本章节前提条件,测试人员需要有一定的python基础。

python+appium环境搭建

1、安装python,下载地址:https://www.python.org/downloads/

2、安装Appium-Python-Client库,命令:pip install Appium-Python-Client

3、安装jdk,下载地址:https://www.oracle.com/java/technologies/javase-downloads.html

4、安装Android sdk,下载地址:https://www.androiddevtools.cn/

5、安装appium,下载地址:https://appium.io/

python+appium实例操作说明

1、启动appium服务;

2、连接Android手机或者安装安卓手机模拟器并启动,也启动需要测试的APP;

3、使用adb devices命令,查看手机的驱动名称;

4、使用aapt dump badging ***.apk 命令,进行获取APP包名、activity名;

5、在Android的tools文件夹下运行uiautomatorviewer.bat,该工具可以进行APP的元素定位,同时也可以获取包名。

6、项目目录结构

文件夹结构如下图所示:

testCase--存放测试用例的文件夹

testImg--存放测试结果的截图文件

testLib--存放测试脚本需要依赖的第三方库文件

testLog--存放测试结果日志文件

testParame--存放定位元素的参数,为python文件

testReport--存放测试报告文件,为html文件

mainRun.py--入口文件

7、核心代码解说

7.1、入口文件mainRun.py

7.2、myPageIni.py文件

myPageIni.py文件是在testParame文件夹下,其主要是设置元素的定位参数。

7.3、baseIni.py文件

baseIni.py文件也是在testParame文件夹下,其主要是配置appium启动的参数。

# 定义一个空的字段变量

desired_caps = {}

# 给platformName健赋值,因为用安卓手机测试,所以值为Android

desired_caps['platformName'] = 'Android'

# 给platformVersion健赋值,值为手机的当前系统版本

desired_caps['platformVersion'] = '7.1.1'

# 给deviceName健赋值,值为手机的驱动名称,用adb devices 可以查看获得

desired_caps['deviceName'] = '4769f426'

# 给appPackage健赋值,值为app的包名,可以用adb shell dumpsys activity | findstr mFocusedActivity 查看获得

desired_caps['appPackage'] = 'com.liuqing.test'

# 给appActivity健赋值,值为app的Activity,可以用aapt dump badging liuqing.apk 查看获得,其中launchable-activity冒号后面的就是其值

desired_caps['appActivity'] = 'com.ssf.tckotlin.ui.activity.welcome.WelcomeActivity'

# appServer 是启动的服务器

appServer='http://localhost:4723/wd/hub'

7.4、myPage.py文件

myPage.py文件是在testCase文件夹下,其主要处理app的自动化测试逻辑。

7.5、HTMLTestRunner.py文件

HTMLTestRunner.py文件是在testLib文件夹下,其是外来库,是生成html的测试报告库,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

8、测试报告

测试脚本运行后,会自动生成html报告,格式内容如下:

Appium定位

1、常用识别元素的工具

uiautomator:Android SDK自带的一个工具,在tools目录下

monitor:Android SDK自带的一个工具,在tools目录下

Appium Inspector:Appium自带的一个功能,只有mac下可以使用该功能

2、通过id定位

例子:driver.find_element_by_id("***")

3、通过class_name定位

例子:driver.find_element_by_class_name("***")

4、通过xpath定位

例子:driver.find_element_by_xpath("***")

5、通过text定位

例子:driver.find_elements_by_android_uiautomator("***")

6、通过css_selector定位(webview)

只适用于webview的html页面,继承自webdriver,与pc版本的UI测试一致;例子:driver.find_element_by_css_selector("***")

7、通过link_text定位(webview)

只适用于webview的html页面,继承自webdriver,与pc版本的UI测试一致;例子:
driver.find_element_by_link_text(
"***")

8、通过name定位

例子:
driver.find_element_by_name("***")

难点

1、安卓7.0系统,在appium1.4版本以下不能定位到元素;

2、启动uiautomatorviewer.bat,获取页面元素时,报错;打开 uiautomatorviewer 时报错:

Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist! Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!

解决方法:

拔出usb数据线,重新连接手机;重新启动即可。

3、常出现捕捉不到元素的情况,解决方法增加一个停留时间:time.sleep(秒数字)

相关推荐

Python Flask 容器化应用链路可观测

简介Flask是一个基于Python的轻量级Web应用框架,因其简洁灵活而被称为“微框架”。它提供了Web开发所需的核心功能,如请求处理、路由管理等,但不会强制开发者使用特定的工具或库。...

Python GUI应用开发快速入门(python开发软件教程)

一、GUI开发基础1.主流GUI框架对比表1PythonGUI框架比较框架特点适用场景学习曲线Tkinter内置库,简单小型应用,快速原型平缓PyQt功能强大,商用许可专业级桌面应用陡峭PySi...

【MCP实战】Python构建MCP应用全攻略:从入门到实战!

实战揭秘:Python Toga 打造跨平台 GUI 应用的神奇之旅

在Python的世界里,GUI(图形用户界面)开发工具众多,但要找到一款真正跨平台、易于使用且功能强大的工具并不容易。今天,我们就来深入探讨一下Toga——一款Python原生、操作系统原...

python应用目录规划(python的目录)

Python大型应用目录结构规划(企业级最佳实践)核心原则模块化:按业务功能拆分,高内聚低耦合可扩展性:支持插件机制和动态加载环境隔离:清晰区分开发/测试/生产环境自动化:内置标准化的构建测试部署流...

Python图形化应用开发框架:PyQt开发简介

PyQt概述定义:PyQt是Python绑定Qt框架的工具集,用于开发跨平台GUI应用程序原理:通过Qt的C++库提供底层功能,PyQt使用SIP工具生成Python绑定特点:支持Windows/ma...

[python] 基于PyOD库实现数据异常检测

PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点。异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误、噪声或潜在的有趣现象。无论是处理小规模项目还是大型...

Python、Selenium 和 Allure 进行 UI 自动化测试的简单示例脚本

环境准备确保你已经安装了以下库:SeleniumAllurepytest你可以使用以下命令安装所需库:pipinstallseleniumallure-pytestpytest示例代码下面的代...

LabVIEW 与 Python 融合:打造强大测试系统的利器

在现代测试系统开发领域,LabVIEW和Python各自凭借独特优势占据重要地位。LabVIEW以图形化编程、仪器控制和实时系统开发能力见长;Python则凭借丰富的库资源、简洁语法和强大数...

软件测试进阶之自动化测试——python+appium实例

扼要:1、了解python+appium进行APP的自动化测试实例;2、能根据实例进行实训操作;本课程主要讲述用python+appium对APP进行UI自动化测试的例子。appium支持Androi...

Python openpyxl:读写样式Excel一条龙,测试报表必备!

无论你是测试工程师、数据分析师,还是想批量导出Excel的自动化工作者,只需一个库openpyxl,即可高效搞定Excel的各种需求!为什么选择openpyxl?支持.xlsx格式...

Python + Pytest 测试框架——数据驱动

引言前面已经和大家介绍过Unittest测试框架的数据驱动框架DDT,以及其实现原理。今天和大家分享的是Pytest测试框架的数据驱动,Pytest测试框架的数据驱动是由pytest自...

这款开源测试神器,圆了我玩游戏不用动手的梦想

作者:HelloGitHub-Anthony一天我在公司用手机看游戏直播,同事问我在玩什么游戏?我和他说在看直播,他恍然大悟:原来如此,我还纳闷你玩游戏,咋不用动手呢。。。。一语惊醒梦中人:玩游戏不用...

Python单元测试框架对比(pycharm 单元测试)

一、核心框架对比特性unittest(标准库)pytest(主流第三方)nose2(unittest扩展)doctest(文档测试)安装Python标准库pipinstallpytestp...

利用机器学习,进行人体33个2D姿态检测与评估

前几期的文章,我们分享了人脸468点检测与人手28点检测的代码实现过程,本期我们进行人体姿态的检测与评估通过视频进行人体姿势估计在各种应用中起着至关重要的作用,例如量化体育锻炼,手语识别和全身手势控制...

取消回复欢迎 发表评论: