Python+Appium+unittest实现安卓APP UI 自动化测试
- 格式:pptx
- 大小:1.93 MB
- 文档页数:24
(转载)UI接⼝分层⾃动化测试框架设计思想阅读本⼩节,需要读者具备如下前提条件:1. 掌握⼀种编程语⾔基础,如java、python等。
2. 掌握⼀种单元测试框架,如java语⾔的testng框架、python的unittest框架。
3. 掌握⽬前主流的UI测试框架,移动端APP测试框架Appium,或者掌握Web端测试框架Selenium。
4. 如果是Appium框架,还需要掌握如何定位控件元素,原⽣页⾯可使⽤安卓SDK⾃带的uiautomatorviewer⼯具,webview页⾯可以使⽤Chrome浏览器⼊"chrome://inspect/#devices",该⽅法需要FQ或者修改hosts。
5. 如果是Web端,浏览器中打开F12即可。
1APP端UI分层⾃动化测试框架的搭建下⾯以Appium+python+unittest为例介绍UI⾃动化框架的搭建思路1. 最开始⼊门级别的代码以登录页⾯举例,如下:最开始的登录脚本:2. 对元素操作的公⽤⽅法进⾏封装按照上述代码写了很多⾏,发现每次操作元素都要写同样的代码,⼀是啰嗦,⼆是⼯作量⼤,这样就要将重复⾼的操作抽象出来进⾏封装成类,及把元素定位,元素点击,元素输⼊、页⾯滑动等⽅法进⾏封装,如下代码:上述代码只是展⽰了查找元素的⽅法,在BaseAction类中封装元素对象的重⽤操作代码笔者就不贴出来,⼤家明⽩思路即可。
3. 测试代码和测试数据分离开始测试数据还是写在测试代码中,如果⽤例多了,后期需要修改数据,这样只能在测试代码中修改,实际中没有这样维护代码的,所以需要将测试数据和代码分离,笔者选择ini配置⽂件存放数据。
那么问题来了,把数据放在ini配置⽂件中,在代码中怎样获取数据呢,这就需要将操作配置⽂件的⽅法封装成⼀个单独的类,即如下代码通过对元素操作公⽤⽅法的封装和测试代码和测试数据的分类,优化的脚本如下:存放数据的ini配置⽂件:app配置:存放元素控件:存放元素输⼊的数据:测试脚本:4. 通⽤的公⽤类封装以上的脚本中,其实还缺少⼀些东西,如启动appiumsever,⽇志记录,发送邮件,数据库操作等,这⼏种操作都是框架公⽤的,所以单独封装成类,代码如下:appiumsever类:log⼯具类:还有发送邮件类和数据库操作类笔者就不贴出来了,重在⼤家理解思路即可。
写自动化用例测试代码自动化测试用例是软件开发过程中非常重要的一环,它可以帮助开发团队快速验证软件功能的正确性和稳定性。
在编写自动化测试用例的过程中,我们通常会使用测试框架和编程语言来实现。
下面我将以Python语言为例,简单介绍一下编写自动化测试用例的基本步骤。
首先,我们需要选择一个合适的测试框架,比较流行的有unittest、pytest、nose等。
这里以unittest为例进行介绍。
1. 首先,我们需要导入unittest模块:python.import unittest.2. 然后,我们创建一个测试类,继承unittest.TestCase类:python.class TestCalculator(unittest.TestCase):def test_addition(self):# 测试加法。
result = 2 + 3。
self.assertEqual(result, 5)。
def test_subtraction(self):# 测试减法。
result = 5 3。
self.assertEqual(result, 2)。
3. 接下来,我们可以使用unittest提供的assert断言方法来验证测试结果是否符合预期。
在上面的例子中,我们使用了self.assertEqual()方法来比较实际结果和预期结果是否相等。
4. 最后,我们可以使用unittest提供的main()函数来执行测试用例:python.if __name__ == '__main__':unittest.main()。
以上就是一个简单的自动化测试用例的编写过程。
当然,实际的测试用例可能会更加复杂,涉及到页面操作、接口调用等。
在实际编写测试用例时,我们需要根据具体的需求和场景来设计和实现测试用例,保证覆盖到软件的各个功能点和边界条件,从而保证软件质量和稳定性。
希望这个简单的例子可以帮助你理解自动化测试用例的编写过程。
如何搭建基于C#和Appium的Android⾃动测试环境本⽂由葡萄城技术团队于博客园原创并⾸发转载请注明出处:,葡萄城为开发者提供专业的开发⼯具、解决⽅案和服务,赋能开发者。
如果想做⼿机端的⾃动化测试,Appium是⾸选的测试框架,因为⽹上使⽤的⼈多,资料丰富,⽀持语⾔多 Jave,Python,C#,Ruby,PHP,碰见问题也容易得到帮助。
关于Appium环境搭建的例⼦⽹上⽐较多,不过都是关于Python,Java的,使⽤C#客户端的资料⽐较少,公司现有的测试系统是基于C#构建的,因为要和现有系统集成,所以选择的C#语⾔作为客户端,下载Appium 官⽹提供的C#例⼦,但是对应的Android 版本,Nunit 版本都⽐较旧,对于初次接触⼿机测试的⼈来说,⼀步⼀个坑,把例⼦拿下来,折腾了⼀两天,还是各种问题。
最终通过百度,Google,终于搭建好了环境,现在分享⼀下过程,希望对于后来⼈会有些帮助。
默认⼤家是安装了Visual Studio 的,如果没有安装,请百度如何安装Visual Studio搭建环境有三部分,模拟器环境准备,Appium服务器环境准备,C#单元测试⼯程环境准备,关于前两部分腾讯课堂,⽹易课堂都有视频资料,⼤家可以参考。
下⾯我们开始:1. 模拟环境搭建模拟环境搭建建议⽤Android Studio ,这样配置简单,模拟器的性能也强⼀些。
安装完成后打开 Android Studio在Tools菜单下找到 SDK Manager 菜单打开( Tools –>SDK Manager)显⽰如下:找到 Android SDK (Appearance & Behavior ->System Setting -> Android SDK)安装 Android SDK 例如:Android 6.0接下来配置环境变量:配置ANDROID_HOME 变量,对应的⽬录可⽤从下⾯位置找,我对位置做过调整,和默认安装的位置不⼀样。
Android测试中的自动化工具评测与选择随着移动应用开发的快速发展,Android平台成为了最受欢迎的移动操作系统之一。
然而,随之而来的是对移动应用质量的不断追求,这要求开发人员在应用发布之前进行全面而准确的测试。
为了提高效率和质量,Android测试中的自动化工具成为开发人员的首选。
本文将对几种常用的Android自动化测试工具进行评测,并提供选择的建议。
1. AppiumAppium是一种开源的移动应用自动化测试工具,支持多种操作系统(包括Android)。
它使用WebDriver协议进行测试,并支持各种编程语言(如Java、Python和Ruby)。
Appium的优点在于可以在真实设备和模拟器上运行测试,且支持多种操作系统版本。
然而,Appium需要开发人员具备较强的编程能力,并且在配置和安装方面较为复杂。
2. EspressoEspresso是由Google开发的Android自动化测试工具,专注于用户界面(UI)测试。
它提供了一套简洁明了的API,可以方便地编写和运行UI测试。
Espresso的优点在于速度快、稳定性高,且无需涉及设备配置或者系统安装。
然而,在处理复杂场景或者多个应用程序之间的交互时,Espresso的能力相对较弱。
3. UI AutomatorUI Automator也是由Google开发的自动化测试框架,用于执行跨应用程序的功能测试。
它可以与Android系统进行交互,并模拟用户在多个应用程序之间的操作。
UI Automator的优点在于支持多应用程序测试和跨应用程序交互,适用于复杂的测试场景。
然而,使用UI Automator需要对Android框架有一定的了解,并且测试脚本编写较为繁琐。
4. RobotiumRobotium是一种Android自动化测试工具,专注于功能和用户界面的测试。
它提供了易于使用的API,能够模拟用户在应用程序中的操作和事件。
Robotium的优点在于容易上手、功能强大,可用于测试各种应用程序场景。
Python与Appium实现⼿机APP⾃动化测试⽬录1.什么是Appium2.启动⼀个app⾃动化程序的步骤3.appium服务介绍4. appium客户端使⽤5.adb的使⽤6.Appium启动过程分析1.什么是Appiumappium是⼀个开源的测试⾃动化框架,可以与原⽣的、混合的和移动的web应⽤程序⼀直使⽤。
它使⽤WebDriver协议驱动IOS(内置的测试引擎xcuitest)、Android(uiautomator2,Espresso)和Windows应⽤程序很多⼈学习蟒蛇,不知道从何学起。
很多⼈学习寻找python,掌握了基本语法之后,不知道在哪⾥案例上⼿。
很多已经可能知道案例的⼈,却不怎么去学习更多⾼深的知识。
这三类⼈,我给⼤家提供⼀个好的学习平台,免费获取视频教程,电⼦书,以及课程的源代码!QQ群:101677771欢迎加⼊,⼀起讨论学习原⽣应⽤程序:安卓程序是⽤JAVA或kotlin开发出来的,这种程序是原⽣应⽤程序,原⽣应⽤⽐较流畅,好调⽤,缺点是不同的端需要的开发语⾔不同web应⽤程序:就web应⽤程序可以直接放到⼿机端来运⾏,web是⽤html+css+js编写的混合应⽤程序:结合原⽣与web应⽤程序,有些页⾯⽤原⽣的,有些页⾯使⽤web应⽤程序国内⽐较出名的框架:appiumairtest 现在是由阿⾥在维护,最开始是运⽤在游戏测试,和appium的功能差不多uiautomator2(⽤法简单,⾮常python,只⽀持原⽣的,不⽀持其他)设计哲学:你没有必要为了⾃动化⽽重新编译你的应⽤或者经任何⽅式修改它(Android/IOS系统⾃带框架)你不应该被限制在特定的语⾔或框架上来编写运⾏测试(API调⽤,接⼝)移动端⾃动化框架在⾃动化接⼝⽅⾯不应该重造轮⼦(WebDriver,appium是在selenium的基础上开发的)移动端⾃动化框架应该开源,不但是在名义上⽽且在精神和实践上都要实⾄名归2.启动⼀个app⾃动化程序的步骤打开模拟器,或者连接上⼿机(注意开发者模式以及USB调试模式已经开启,⼿机授权要确认,否则是连接不上的)在命令窗⼝输⼊adb devices(查看设备名称)开启appium服务appium客户端代码连接服务3.appium服务介绍中⽂设置除了简单设置,还有⼀些⾼级设置,我们可以看⼀下保存了可以查看预设,⽅便以后使⽤编辑配置是进⼊修改环境变量主机和端⼝号不需要设置,直接可以开启服务器开启后,可以看到服务器运⾏中,右边三个按钮的功能分别是启动检查器会话,获取原始⽇志,停⽌运⾏服务器点击后⾃动经记事本打开,如果安装了其他编辑软件,可以选择打开⽅式服务开启后,就可以使⽤python来进⾏客户端来连接服务4. appium客户端使⽤使⽤前确定已经安装了,pip install appium-python-client,安装后,直接导⼊使⽤看⼀下Remote的源代码同时appium服务端也会显⽰500的错误犹豫appium1.20.2版本的,不像之前的版本需要传⼊的必须参数多了,现在只需要传platformName即可,所以具体可以看⾃⼰安装的是什么版本,不过加上更多参数也不受影响常⽤的caps参数:platformName 平台名称(Android,IOS)必选deviceName 设备名称(可选)udid (和deviceName作⽤⼀样,在不同版本下这个参数重好⽤,所以以后⽤udid代替deviceName)app apk的存放路径(可选)appActivity(页⾯名称,相当于web页⾯中title)和 appPackage(包名)platformVersion 系统版本号(可选,版本不匹配会报错)noReset 选择True 不重启(意思是app的引导页⾯,缓存数据等不清空,如果选择False,app相当于重新安装了,把之前的数据都清空了)automationName 驱动名称browserName 直接测web⽤ChromeautoWebview 开机进⼊webview模式(开机直接进⼊⽹页模式,不需要进⼊原⽣页⾯)chromedriverExecutable ⽹页浏览器驱动所放路径(必须是完整路径)chromedriverExecutableDir ⽹页浏览器驱动所放⽬录unicodekeyboard 开启unicode编码形式的键盘resetKeyboard 重启键盘(和上⼀个⼀块配置,两个都设置成True,就可以开启中⽂输⼊,相当于我们的电脑安装输⼊法)autoGrantPermissions 开启⼿机权限(相当于web端中弹出来的alert弹框,⽆法定位元素,设置了True,就⽅便定位元素)官⽹上还有很多⽤法,感兴趣的可以参考⼀下:通过adb获取appPackage和appActivity:⽅法⼀:adb shell am monitor 监控操作(在cmd中执⾏此命令后,然后在⼿机上或模拟器上操作对应的app,就会显⽰对应的包名)⽅法⼆:adb logcat | findStr -i displayed 从⽇志进⾏查询包名和页名称通过aapt获取appPackage和appActivity:aapt dump badging 全路径.apk拿到appPackage和appActivity后,可以使⽤包名的⽅式来访问app,代码如下:from appium.webdriver import Remote# 启动⼀次请求# 1.指明需要连接的服务地址和端⼝号# 2.You must include a platformName capabilitycaps = {"platformName": "Android","udid": "emulator-5554","appPackage": "com.lemon.lemonban","appActivity": ".activity.WelcomeActivity"}driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',desired_capabilities=caps)运⾏结果:总结:platformName 必填,其他可选deviceName重要app安装apk包,⾃动打开(已经安装过的不会重新安装),apk包路径最好不要有中⽂,不知道为什么我的电脑⽤这种⽅式运⾏⼀直报错,最后也未能解决,所以我使⽤包名运⾏在复制appActivity时,注意⼀定是app的⾸页页⾯名称,别复制错了5.adb的使⽤adb(Android Debug Bridge)安卓调试桥:作⽤就是操作安卓⼿机中的app相关命令:adb devices 查看设备是否连接(可以⼿动连接 adb connect 127.0.0.1:5554,⽹上可以搜索不同模拟器的端⼝号)adb shell 登录设备(进⼊⼿机系统⾥⾯)adb shell dumpsys activity | find "mFocusedActivity" 查看前台应⽤activity应⽤名称(注意⼀定要打开了app,再去执⾏命令,dumpsys下有很多命令,可以查看帮助⽂档进⾏更多了解)adb install 电脑/包名.apk 安装软件adb uninstall 电脑/包名.apk 制裁软件adb pull ⼿机⽂件路径电脑⽂件路径从⼿机下载/拉⽂件电脑端adb push 电脑⽂件路径⼿机⽂件路径从电脑推送/上传到⼿机端adb shell pm list packages 显⽰所有的安装包名6.Appium启动过程分析客户端通过wd/hub/session发送请求创建⼀个会话session提供了参数就是cpas服务端接收到caps信息后,检验caps参数是否合法adb install io.setting.appium判断有没有包名启动app获取操作系统的版本:adb.exe -P 5037 -s emulator-5554 shell getprop ro.build.version.release判断包名是否已经安装到⼿机上:adb.exe -P 5037 -s emulator-5554 shell dumpsys package com.lemon.lemon启⽤app:adb.exe -P 5037 -s emulator-5554 shell am start -W -n com.lemon.lemonban/.activity.WelcomeActivity -S 到此这篇关于python+appium实现⾃动化测试的⽰例代码的⽂章就介绍到这了。
自动化测试中常用的UI自动化测试框架介绍在软件开发的过程中,UI(用户界面)自动化测试是一项必不可少的工作。
自动化测试可以简化测试流程,提高测试效率,减少测试成本。
目前,在市面上有很多UI自动化测试框架,本文将介绍一些常用的UI自动化测试框架。
一、SeleniumSelenium是一个自动化测试框架,它可以模拟用户在Web页面中的操作。
它提供了很多不同编程语言的API,比如Java、C#、Python等。
Selenium可以支持各种浏览器,包括Chrome、Firefox、IE等。
它可以通过记录、回放用户的操作,在不同浏览器中自动执行测试用例。
此外,Selenium还支持一些高级功能,比如截图、断言等。
二、AppiumAppium是一个移动应用自动化测试框架。
它可以用来测试各种移动应用,包括iOS、Android、Windows等平台。
与Selenium类似,Appium也提供了各种编程语言的API,比如Java、Python 等。
它可以模拟用户在移动应用中的操作,包括点击、滑动、输入等。
Appium还提供了一些高级功能,比如录制和回放测试用例。
三、TestCompleteTestComplete是一款功能强大的自动化测试工具,它可以测试各种应用程序,包括Web应用、桌面应用、移动应用等。
TestComplete支持多种编程语言,比如JavaScript、Python等。
它还可以对各种技术框架进行测试,比如AngularJS、ReactJS等。
此外,TestComplete还提供了非常详细的测试报告。
四、Robot FrameworkRobot Framework是一款基于Python开发的自动化测试框架。
它可以测试各种应用程序,包括Web应用、桌面应用、移动应用等。
Robot Framework不仅支持Python编写的测试用例,还可以支持其他编程语言编写的测试用例。
此外,Robot Framework还提供了很多内置库,比如SeleniumLibrary、AppiumLibrary等,方便用户快速进行测试。
python+appium+yaml移动端⾃动化测试框架实现详解结构介绍之前分享过⼀篇安卓UI测试,但是没有实现数据与代码分离,后期维护成本较⾼,所以最近抽空优化了⼀下。
不想看⽂章得可以直接去Github,欢迎拍砖⼤致结构如下:testyaml管理⽤例,实现数据与代码分离,⼀个模块⼀个⽂件夹public 存放公共⽂件,如读取配置⽂件、启动appium服务、读取Yaml⽂件、定义⽇志格式等page 存放最⼩测试⽤例集,⼀个模块⼀个⽂件夹results 存放测试报告及失败截图logs 存放⽇志testcase 存放测试⽤例runtest.py 运⾏所有测试⽤例yaml格式介绍⾸先看下yaml⽂件的格式,之前也写过⼀点关于yaml语法学习的testcase部分是重点,其中:element_info:定位元素信息find_type:属性,id、xpath、text、idsoperate_type: click、sendkeys、back、swipe_up 为back就是返回,暂时就四种上⾯三个必填,operate_type必填send_content:send_keys 时⽤到index:ids时⽤到times: 返回次数或者上滑次数testinfo:- id: cm001title: 新增终端门店execute: 1testcase:-element_info: 客户find_type: textoperate_type: click-element_info: com.fiberhome.waiqin365.client:id/cm_topbar_tv_rightfind_type: idoperate_type: click-element_info: com.fiberhome.waiqin365.client:id/custview_id_singletv_inputtextfind_type: idsoperate_type: send_keyssend_content: auto0205index: 0-element_info:find_type:operate_type: swipe_uptimes: 1-element_info: 提交find_type: textoperate_type: click-element_info:find_type:operate_type: backtimes: 1代码部分公共部分个⼈觉得核⼼的就是公共部分,相当于建房⼦,公共部分搞好了,后⾯仅仅是调⽤即可,建房⼦把架⼦搭好,后⾯就添砖加⽡吧。
python+appium⾃动化测试-通⽤设置(⼀)这篇⽂章总结了我平时⽤的⽐较多的3个设置,后续有⽤到其它的,会继续更新哦。
⼀、运⾏时会重装APP问题问题:在使⽤Appium运⾏⾃动化代码的时候,每次运⾏会⾃动清除APP的原来数据,并将APP卸载,再重新安装打开。
解决:在APP启动的参数设置中添加"noReset": True,表⽰启动APP时不清除APP⾥的原有的数据。
未设置该参数,系统默认为"noReset": False,表⽰在启动APP时会⾃动清除卸载APP,重新安装,所以每次打开的APP都是新安装的APP。
代码⽰例:from appium import webdriverdef start(self):caps = {"platformName": "Android","deviceName": "ABCDEFGHIJKLMNOPQ","platforVersion": "9","appPackage": "com.sina.weibo","appActivity": "com.sina.weibo.SplashActivity","autoGrantPermissions": "true","automationName": "UiAutomator2",# 启动app时不要清除app⾥的原有的数据"noReset": True}self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)self.driver.implicitly_wait(20)⼆、执⾏测试⽤例会重启APP问题:执⾏多条测试⽤例时,每执⾏完⼀个测试⽤例,都会重新启动AP解决:在测试⽤例类中导⼊pytest,将测试⽤例类中的初始化函数设置为setup_class,修改后启动APP,只会执⾏⼀次初始化。
Android测试中的UI自动化测试工具推荐在Android测试领域,UI自动化测试工具是至关重要的一环。
它们的目的是通过模拟用户交互来验证应用程序在不同设备和屏幕尺寸下的可靠性和稳定性。
本文将介绍几款在Android测试中被广泛推荐的UI自动化测试工具。
一、Appium:跨平台的自动化测试工具Appium是一款开源、跨平台的自动化测试工具,支持多种编程语言,包括Java、Python、Ruby等。
它可以针对Android和iOS应用进行测试,而且与操作系统解耦,使得测试用例可以在不同平台上重复使用。
Appium使用WebDriver协议进行操作,支持多种自动化框架和测试框架,如JUnit和TestNG。
二、Espresso:Google官方推荐的测试框架Espresso是一个强大的UI测试框架,由Google官方推出并维护。
它专为Android应用程序设计,提供了简单易用的API和丰富的匹配器(Matcher)来组织测试用例。
Espresso支持事件同步和异步操作的优化,能够准确地模拟用户交互,并进行可靠的断言和验证。
三、UI Automator:面向系统级测试的工具UI Automator是Google提供的一种系统级开发测试框架,用于验证Android应用的用户界面。
它提供了一组强大的API,可以访问和操作应用程序中的UI组件。
UI Automator适用于系统级UI测试场景,如跨应用测试、应用间交互和系统设置的测试。
它支持多个设备和多个应用的并行测试,并提供JUnit测试运行器执行测试。
四、Robot Framework:基于关键字的测试框架Robot Framework是一个开源的、通用的自动化测试框架,可以用于Android应用程序的UI自动化测试。
它采用关键字驱动的方式编写测试脚本,非常易读且可维护。
Robot Framework支持多种自动化库和插件,可与其他工具无缝集成,提供了广泛的测试报告和日志。