百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

浅谈自动化测试工具 Appium 自动化测试常用工具

bigegpt 2024-10-04 14:02 4 浏览

一、简单介绍

(一)测试对象

appium 是一个自动化测试开源工具,支持iOS和 Android平台上的原生应用,web应用和混合应用。

  • 移动原生应用:单纯用ios或者android开发语言编写的、针对具体某类移动设备、可直接被安装到设备里的应用,一般可通过应用商店获取,比如某个游戏app;
  • 移动web应用:使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的Chrome),不需要下载到设备上,而是通过浏览器直接访问,比如H5九曲封神游戏;
  • 混合应用:同时使用网页语言与程序语言开发,通过应用商店区分移动操作系统分发,用户需要安装使用的移动应用,比如手机上的淘宝客户端

(二)支持平台及语言

  • appium是跨平台的,支持OSX,Windows以及Linux系统。它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性
  • appium支持多语言,采用C/S设计模式,只要满足client能够发送http请求给server即可

(三)工作原理

如图所示,appium主要分为三个点:client端,server端,及测试移动设备

  • client端:用各类语言写的测试脚本
  • server端:我们安装appium工具的那部分,专门用来监听并接收来自client端的请求,转发请求并控制移动设备执行测试,默认开启并监听4723接口
  • 移动设备:支持三类设备,我们的最终目的:在设备上自动执行指定的操作

整个过程:

第一,在某台服务器上安装appium工具(server端),开启进程(默认4723接口)进行监听;

第二,编写测试脚本,放置到服务器上,执行该测试脚本(相当于发送命令给server端)

第三,移动设备接收到server端发送过来的命令,执行指定的操作

(四)安装工具

  • 测试语言,如python
  • appium客户端
  • appium服务端
  • 移动设备,若使用虚拟机则需进行安装

二、环境搭建

(一)安装Android SDK

1、Android SDK(Software Development Kit,软件开发工具包)提供了 Android API 库和开发工具构建,测试和调试应用程序,可以看做用于开发和运行Android应用的一个软件

2、提供小工具,比如adb、aapt、uiautomatorview

3、测试设备使用安卓模拟器,这一步决不能跳过

(二)安装 appium Server

1、下载地址:https://github.com/appium/appium-desktop/releases

2、下载appium安装包(appium-desktop-Setup-1.2.7.exe,appium-desktop-1.2.7.dmg等)

3、安装,并配置appium环境变量

(三)安装 python-client

1、先安装编程语言,比如python语言

2、安装Appium-Client,python的话可使用pip安装:pip install Appium-Python-Client

三、应用及操作

(一)调用appium过程

1、配置手机设备参数,告诉server端我想调起的是哪一台手机设备

2、抓取手机上应用的控件,指定对应的控件来进行操作

3、对抓取到的控件进行操作,比如点击、填写参数等

(二)第一步,配置手机设备参数

Appium Desired Capabilities 基本配置如下:
#Android
environment
import unittest
from
appium import webdriver
desired_caps
= {}
desired_caps
['platformName'] = 'Android'
desired_caps
['platformVersion'] = '4.2'
desired_caps
['deviceName'] = 'Android Emulator'
desired_caps
['app'] = PATH('../../../apps/selendroid-test-app.apk')
desired_caps
['appPackage'] = package
desired_caps
['appActivity'] = activity
self
.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

常见参数解释:

deviceName:指定启动设备,比如Android Emulator、iPhone Simulator等

automationName:指定自动化引擎,默认appium

platformName:指定移动平台,Android或者iOS

platformVersion:指定平台的系统版本。例如指定Android系统版本为4.2

appActivity:待测试app的Activity,注意,原生app的话要在activity前加个“.”

appPackage:待测试app的包名(package)信息

(三)第二步,抓取手机上应用的控件

通过Android SDK内置工具uiautomatorviewer.bat来查看手机应用的控件参数(该工具位于 /tools/bin/ 目录下)

1、id定位

使用方法:

driver.find_element_by_id('com.android.contacts:id/three')

2、name定位

使用方法:

el = self.driver.find_element_by_name('未接来电')

el = self.driver.find_elements_by_name('未接来电')

3、class name 定位

使用方法:

els = self.driver.find_element_by_class_name('android.widget.ImageButton')

els = self.driver.find_elements_by_class_name('android.widget.ImageButton')

4、Accessibility ID定位

使用方法:

el = self.driver.find_element_by_accessibility_id('三')

el = self.driver.find_elements_by_accessibility_id('三')

5、android uiautomator定位

使用方法:

el = self.driver.find_element_by_android_uiautomator('new UiSelector().description(星形符号")')

els = self.driver.find_elements_by_android_uiautomator('new UiSelector().clickable(false)')

(四)第三步,操作控件

1.scroll  
scroll(self, origin_el, destination_el):  
从元素origin_el滚动至元素destination_el  
举例:driver.scroll(el1, el2)  
用法:driver.scroll(el1,el2)

2.tap  
tap(self, positions, duration=None):  
模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)  
举例:driver.tap([(100, 20), (100, 60), (100, 100)], 500)  
用法:driver.tap([(x,y),(x1,y1)],500)

3. swipe
swipe(self, start_x, start_y, end_x, end_y, duration=None):  
从A点滑动至B点,滑动时间为毫秒  
举例:driver.swipe(100, 100, 100, 400)  
用法:driver.swipe(x1,y1,x2,y2,500)

4. keyevent
keyevent(self, keycode, metastate=None):  
发送按键码(安卓仅有),按键码可以上网址中找到  
用法:driver.keyevent(‘4’)

5. press_keycode
press_keycode(self, keycode, metastate=None):  
发送按键码(安卓仅有),按键码可以上网址中找到  
用法:driver.press_ keycode(‘4’)

6.text
text(self):  
返回元素的文本值  
用法:element.text

7.click
click(self):  
点击元素  
用法:element.click()

8.get_attribute
get_attribute(self, name):   
获取某元素的相关值  
用法:element.get_attribute(“name”)

9.size
size(self):  
获取元素的大小(高和宽)  
用法 driver.element.size

10. page_source
page_source(self):    
获取当前页面的源  
用法:driver.page_source

11.quit
quit(self):   
退出脚本运行并关闭每个相关的窗口连接   
举例:driver.quit()

四、总结

1、Appium跨平台,支持Android和IOS自动化测试。

2、Appium支持多语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure等等

3、支持原生应用,web应用和混合应用

4、仅仅支持UI测试

作者:蔡瑞淳

出处:testerhome

原文链接:https://testerhome.com/topics/11318

著作权归原作者所有,如需转载,请联系原作者单独授权

相关推荐

C#.NET Autofac 详解(c# autoit)

简介Autofac是一个成熟的、功能丰富的.NET依赖注入(DI)容器。相比于内置容器,它额外提供:模块化注册、装饰器(Decorator)、拦截器(Interceptor)、强o的属性/方法注...

webapi 全流程(webapi怎么部署)

C#中的WebAPIMinimalApi没有控制器,普通api有控制器,MinimalApi是直达型,精简了很多中间代码,广泛适用于微服务架构MinimalApi一切都在组控制台应用程序类【Progr...

.NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式

一:背景1.讲故事上一篇我们讲到了注解特性,harmony在内部提供了20个HarmonyPatch重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决95%...

C# 使用SemanticKernel调用本地大模型deepseek

一、先使用ollama部署好deepseek大模型。具体部署请看前面的头条使用ollama进行本地化部署deepseek大模型二、创建一个空的控制台dotnetnewconsole//添加依赖...

C#.NET 中间件详解(.net core中间件use和run)

简介中间件(Middleware)是ASP.NETCore的核心组件,用于处理HTTP请求和响应的管道机制。它是基于管道模型的轻量级、模块化设计,允许开发者在请求处理过程中插入自定义逻辑。...

IoC 自动注入:让依赖注册不再重复劳动

在ASP.NETCore中,IoC(控制反转)功能通过依赖注入(DI)实现。ASP.NETCore有一个内置的依赖注入容器,可以自动完成依赖注入。我们可以结合反射、特性或程序集扫描来实现自动...

C#.NET 依赖注入详解(c#依赖注入的三种方式)

简介在C#.NET中,依赖注入(DependencyInjection,简称DI)是一种设计模式,用于实现控制反转(InversionofControl,IoC),以降低代码耦合、提高可...

C#从零开始实现一个特性的自动注入功能

在现代软件开发中,依赖注入(DependencyInjection,DI)是实现松耦合、模块化和可测试代码的一个重要实践。C#提供了优秀的DI容器,如ASP.NETCore中自带的Micr...

C#.NET 仓储模式详解(c#仓库货物管理系统)

简介仓储模式(RepositoryPattern)是一种数据访问抽象模式,它在领域模型和数据访问层之间创建了一个隔离层,使得领域模型无需直接与数据访问逻辑交互。仓储模式的核心思想是将数据访问逻辑封装...

C#.NET 泛型详解(c# 泛型 滥用)

简介泛型(Generics)是指在类型或方法定义时使用类型参数,以实现类型安全、可重用和高性能的数据结构与算法为什么需要泛型类型安全防止“装箱/拆箱”带来的性能损耗,并在编译时检测类型错误。可重用同一...

数据分析-相关性分析(相关性 分析)

相关性分析是一种统计方法,用于衡量两个或多个变量之间的关系强度和方向。它通过计算相关系数来量化变量间的线性关系,从而帮助理解变量之间的相互影响。相关性分析常用于数据探索和假设检验,是数据分析和统计建模...

geom_smooth()函数-R语言ggplot2快速入门18

在每节,先运行以下这几行程序。library(ggplot2)library(ggpubr)library(ggtext)#用于个性化图表library(dplyr)#用于数据处理p...

规范申报易错要素解析(规范申报易错要素解析)

为什么要规范申报?规范申报是以满足海关监管、征税、统计等工作为目的,纳税义务人及其代理人依法向海关如实申报的行为,也是海关审接单环节依法监管的重要工作。企业申报的内容须符合《中华人民共和国海关进出口货...

「Eurora」海关编码归类 全球海关编码查询 关务服务

  海关编码是什么?  海关编码即HS编码,为编码协调制度的简称。  其全称为《商品名称及编码协调制度的国际公约》(InternationalConventionforHarmonizedCo...

9月1日起,河南省税务部门对豆制品加工业试行新政7类豆制品均适用投入产出法

全媒体记者杨晓川报道9月2日,记者从税务部门获悉,为减轻纳税人税收负担,完善农产品增值税进项税额抵扣机制,根据相关规定,结合我省实际情况,经广泛调查研究和征求意见,从9月1日起,我省税务部门对豆制品...