当前位置:首页 > 技术知识 > 正文内容

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

maynowei9个月前 (08-26)技术知识112

扼要:

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(秒数字)

相关文章

高效办公,你值得拥有之原型工具AXURE篇

简介 Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图...

出售闲置原型素材来赚钱,上传作品,即可收上万元收入

出售闲置原型素材来赚钱。产品经理每年设计出大量的原型作品和组件、元件库、交互原型模板等作品,如果项目结束,你的原型就失去了作用,而有需求的人却找不到这样的作品。现在我们发现这样一家元件库、原型模板、素...

单片机C语言编程,心得都在这里了

单片机写代码总踩坑,头文件被无视,老工程师的经验哪里来?前几天写8x8矩阵键盘的程序,搞了三天代码一直乱报错。后来发现自己连头文件是什么都不清楚,之前写的都是小程序,压根没碰过.h文件。看别人的程序都...

一文弄懂 GO 的 互斥锁 Mutex !(互斥锁的使用方法)

在 Go 语言并发编程中,互斥锁(Mutex)是一个非常重要的同步原语。本文将深入介绍 Mutex 的使用方法、实现原理以及最佳实践。1. 什么是 Mutex?Mutex(互斥锁)是一种用于多线程编程...

python-oracledb——利用python连接Oracle数据库的好用方法

这篇文章最早发布在CSDN了,最近想尝试使用一下头条,重新转移过来了。背景介绍之前使用的数据库一直是MySql,偶尔使用PostgreSQL,都是利用的数据库连接池使用;最近需要在Oracle数据库取...

Docker安装Oracle 11g 数据库过程详解

1、查看docker 版本[root@node3 ~]# docker version Client: Version: 18.09.6 API version:...