1.uiautomatorä¸appiumçåºå«
2.Android自动化测试框架uiautomator2详解
3.uiautomator2详细使用方法
4.å¦ä½ä½¿ç¨åè°è¯ android UIAutomator
5.uiautomator
6.功能测试工具:UiAutomator
uiautomatorä¸appiumçåºå«
uiautomatoråappiumé½ä½ä¸ºç§»å¨ç«¯èªå¨åæµè¯çå·¥å ·.é£ä¹ä»ä»¬æä»ä¹åºå«å¢?源码
1.éç¨åºæ¯ä¸å
uiautomatoréç¨äºadroidææºç«¯èªå¨åæµè¯.èappiumä¸ä» éç¨äºAndroidææº,åæ ·éç¨äºiosææº.
2.ä½ç¨åä¸å
å¨Androidç³»ç»åºæ¯ä¸,uiautomatorå¯è·¨app,å¨ææºROMå±é¢å®ç°äº¤äº.èappiumåªéåå¨åºç¨å é¨,ä¸è½è·¨app.
èä¸appiumå¯ä»¥å®ç°webviewçé¢çèªå¨åæµè¯,èuiautomatorå´ä¸è½.
3.åç
appiumæ¯éè¿webDriverè°èµ·åºç¨,以appium serverä½ä¸ºæ¡¥æ¢,éè¿Bootstrap.jarè°ç¨çandroid端uiautomatorå½ä»¤åios端uiautomation/XCTest(ios 8以ä¸).
uiautomatoréè¿android instrumentationè·åç³»ç»ä¸ä¸æ,设å¤ä¿¡æ¯ç¶æç.
Android自动化测试框架uiautomator2详解
uiautomator2是一种Android自动化测试框架,它提供了多种操作方法,源码如点击、源码长按、源码输入文本、源码滑动、源码tomact源码是什么拖拽、源码截屏等,源码能够模拟用户的源码各种动作。用户可以通过控件的源码id或text等属性,定位到控件,源码从而对控件实施上述操作。源码
在搭建环境时,源码首先需要配置python环境变量,源码将指定的源码路径添加到系统环境变量中的path中。接着,设置pycharm的编码格式,避免乱码。最后,通过运行特定的代码安装uiautomator2。
若内网无法下载,可以尝试使用手机为PC开启热点。weditor是一种页面信息查看工具,可以查看页面包名、运行的Activity、页面布局、FLASH源码下载网页控件等信息。若执行初始化命令失败,可能是端口被其他进程占用,可以通过查看占用该端口的进程并kill掉,或者执行特定命令后再尝试。
用户可以通过坐标控制按钮,但通过坐标不能获取对文本框的控制权。控件通常具有resourceId、text、description、className等属性,用户可以通过这些属性轻松定位到指定控件,实现对控件的控制。
uiautomatorviewer是Android SDK中提供的页面信息查看工具,用户可以通过单击文件进入界面。使用Android Studio下载最新的platform-tools和tools,配置系统环境变量,关闭ATX软件。
在应用uiautomator2框架时,需要导入包。设备连接分为有线连接和无线连接。应用控制包括安装应用、打开应用、关闭应用、关闭所有应用。源码编译软件卸载元素定位可以通过控件的属性进行。元素控制包括单击、双击、长按、文本操作等。手势控制包括滑动、拖拽。系统控制包括按键、旋转、截屏等。此外,还可以通过adb shell input和os.system(command)实现模拟输入。
uiautomator2详细使用方法
Uiautomator2是一个专为Android平台设计的自动化测试工具,基于Python编程,利用谷歌自带的uiautomator2框架,支持跨系统运行,当前版本为2..2。它的工作原理分为Python客户端和移动设备部分,主要用于元素定位、设备交互、图像操作以及应用管理等任务。安装与启动
首先,通过pip安装uiautomator2,确保adb工具已配置。安装后,红色指标源码公式检查环境变量配置是否成功,如能打印设备信息即安装成功。同时,推荐安装weditor,一个浏览器UI查看器,以辅助定位和减少atx的频繁启动。元素定位
uiautomator2支持UiSelector的各种定位方式,包括子元素、兄弟定位,以及相对定位。XPath定位虽然速度较慢,但可通过特定规则进行操作。设备交互
-
涉及单击、长按、拖动(Android 4.3以下不支持)、滑动、双指操作、元素出现消失的监控、输入操作、以及模拟输入法功能。
图像操作
-
提供截图、录制视频功能,可用于测试记录和复现。截图和视频识别点击功能需要注意误识别问题。
应用管理
-
包括获取应用信息、截屏分享源码安装与卸载、运行和停止应用,以及获取图标和通知栏操作。
实用功能
-
如设备连接、设置、屏幕方向控制、文件导入导出、执行shell命令等。
注意事项
Uiautomator2服务的管理很重要,避免影响其他辅助功能或uiautomatorviewer的使用。可以通过特定代码或ATX APP来控制Uiautomator服务的启动和停止。å¦ä½ä½¿ç¨åè°è¯ android UIAutomator
Googleå¨sdk4.0以åæä¾äºä¸ä¸ªèªå¨å解å³æ¹æ¡uiautomatorï¼
ä¼ç¹ï¼å¯ä»¥è·¨åºç¨äºï¼è¿å¯æ¯äº²ççï¼
缺ç¹ï¼å¿ é¡»sdk4.0以ä¸çæ¬ï¼è¦æ³å®ç°ç好ï¼æ好æå¼åé åï¼java项ç®ç¼è¯ä¸ºjaråéè¦pushå°ææºæè½è¿è¡ï¼ä¹å°±æ¯è¯´å¿ é¡»æå°æ¥å¿æ´åè°è¯ã
AppiumåºäºAndroid InstrumentationFrameworkåUIAutomatorï¼ä¹å°±æ¯è¯´è¿ä¸ªå·¥å ·æ¯å¯ä»¥è·¨åºç¨çã说è¿äºï¼å¥½å§ï¼ä¸ºäºå¸®å¤§å®¶æ´å®¹æç解appiumç使ç¨ï¼æè¿é就讲ä¸ä¸uiautomatorç使ç¨æ¹æ³ã
ä½ åºè¯¥æandroid-sdkå§ï¼å级å°4.0以ä¸ï¼è¿å ¥ç®å½android-sdk\toolsï¼ä½ ä¼çå°ä¸¤ä¸ªæ件ï¼
traceview.bat å uiautomatorviewer.batï¼è¿ä¿©æä»¶è®©ä½ æ³èµ·äºmonkeyrunneräºå§ï¼æ¯çï¼traceview.bat就对åºäºhierarchyviewer.batï¼ç¨æ¥æ¥çç¨åºçuiçé¢çï¼é常ä¹æ¯ä½¿ç¨ç®¡çåæéå¯å¨çã
好äºï¼ç°å¨ç¨eclipseå建ä¸ä¸ªjava projectï¼æ¯çï¼ä½ 没çéï¼æ¯java projectä¸æ¯android projectï¼æ·»å å¼ç¨ï¼
å¨project.propertiesä¸å 容为ï¼
# Project target.
target= android-
è¿éçandroid-éè¦åä¹åçandroid.jaråuiautomator.jarä½ç½®ç¸ä¸è´ã
ç¶åå¢ï¼å代ç å§ï¼å»ºç«ä¸ä¸ªç±»ï¼å¾ï¼å个ç»å¤§å®¶åèï¼
package com.uia.example.my;
import org.apache..android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiScrollable;
import com.android.uiautomator.core. UiSelector ;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class TAppWorkAssistV1 extends UiAutomatorTestCase {
public String sLog ;
public File fout = null ;
public FileOutputStream outStream = null ;
public void write2fileï¼String filename,String sDataï¼
{
String sLog= ââ ;
// åå§åæ¥å¿æ件
if ï¼Environment. getExternalStorageState ï¼ï¼ãequalsï¼Environment.MEDIA_MOUNTED ï¼ï¼{
sLog = Environment. getExternalStorageDirectoryï¼ï¼ãgetAbsolutePathï¼ï¼ï¼
try {
fout = new Fileï¼sLog,filenameï¼ï¼
outStream = new FileOutputStreamï¼ fout , true ï¼ï¼ // æ¤å¤ç true æ¯append
sData=sData + â\nâ ;
outStream .writeï¼sData.getBytesï¼ï¼ï¼ï¼
outStream .flushï¼ï¼ï¼
outStream .closeï¼ï¼ï¼
fout = null ;
}
catch ï¼Exception eï¼{
e.printStackTraceï¼ï¼ï¼
}
} else {
System. out .printlnï¼ â 该ææºæ²¡æ SD å¡ â ï¼ï¼
}
}
public void testDemoï¼ï¼ throws UiObjectNotFoundException {
//1. å¯å¨ app
getUiDeviceï¼ï¼ãpressHomeï¼ï¼ï¼
UiObject allAppsButton = new UiObjectï¼ newUiSelectorï¼ï¼ãdescriptionï¼ âAppsâ ï¼ï¼ï¼
allAppsButton.clickAndWaitForNewWindowï¼ï¼ï¼
UiObject appsTab = new UiObjectï¼ new UiSelectorï¼ï¼ãtextï¼ âAppsâ ï¼ï¼ï¼
appsTab.clickï¼ï¼ï¼
UiScrollable appViews = new UiScrollableï¼ newUiSelectorï¼ï¼ãscrollableï¼ true ï¼ï¼ï¼
UiObject settingsApp = appViews.getChildByTextï¼ newUiSelectorï¼ï¼ãclassNameï¼android.widget.TextView. class .getNameï¼ï¼ï¼ï¼ âEfilmâ ï¼ï¼
settingsApp.clickAndWaitForNewWindowï¼ï¼ï¼
//2. è¿å ¥ä¸»çé¢
System. out .printlnï¼ âinto main viewâ ï¼ï¼
System. out .printlnï¼getUiDeviceï¼ï¼ãwaitForWindowUpdateï¼âcom.eshore.efilmâ , ï¼ï¼ï¼
System. out .printlnï¼ âintoed main viewâ ï¼ï¼
UiObject tv1 = new UiObjectï¼ new UiSelectorï¼ï¼ãtextï¼ â å½±é¢ â ï¼ï¼ï¼
tv1.clickï¼ï¼ï¼
//3. ç¹å»å½±é¢
UiObject oyy= new UiObjectï¼ new UiSelectorï¼ï¼ãdescriptionï¼âcinema_rowâ ï¼ï¼ï¼
System. out .printlnï¼ âwait yingyuan come outâ ï¼ï¼
oyy.waitForExistsï¼ï¼ï¼
System. out .printlnï¼ âyingyuan come outâ ï¼ï¼
oyy.clickAndWaitForNewWindowï¼ï¼ï¼
System. out .printlnï¼ âclick yingyuanâ ï¼ï¼
//4. åºæ¬¡
UiObject occ= new UiObjectï¼ new UiSelectorï¼ï¼ãdescriptionï¼âLinearLayoutâ ï¼ï¼ï¼
System. out .printlnï¼ âwait changci come outâ ï¼ï¼
oyy.waitForExistsï¼ï¼ï¼
System. out .printlnï¼ âchangci come outâ ï¼ï¼
occ.clickAndWaitForNewWindowï¼ï¼ï¼
System. out .printlnï¼ âclick changciâ ï¼ï¼
//5. 座ä½
UiObject oseat= new UiObjectï¼ new UiSelectorï¼ï¼ãdescriptionï¼âcinema_shows_list_itemâ ï¼ãindexï¼0ï¼ãchildSelectorï¼ newUiSelectorï¼ï¼ãdescriptionï¼ âLinearLayoutâ ï¼ï¼ï¼ï¼
System. out .printlnï¼ âwait seat come outâ ï¼ï¼
oseat.waitForExistsï¼ï¼ï¼
int h=getUiDeviceï¼ï¼ãgetDisplayHeightï¼ï¼ï¼
int w=getUiDeviceï¼ï¼ãgetDisplayWidthï¼ï¼ï¼
System. out .printlnï¼ âï¼h/2,w/2ï¼=â +h/2+ â,â +w/2ï¼ï¼
getUiDeviceï¼ï¼ãclickï¼h/2,w/2ï¼ï¼
//System.out.printlnï¼âseat count:â+String.valueOfï¼oseat.getChildCountï¼ï¼ï¼ï¼ï¼
//System.out.printlnï¼âseat getText:â+ oseat.getTextï¼ï¼ï¼ï¼
// æªåº§ä½å¾
Process process;
try {
process = Runtime. getRuntime ï¼ï¼ãexecï¼ âscreencap /mnt/sdcard/EfilmFailSnapShot.pngâ ï¼ï¼
try {
process.waitForï¼ï¼ï¼
} catch ï¼InterruptedException eï¼ { // TODO Auto-generated catch block
e.printStackTraceï¼ï¼ï¼
}
} catch ï¼IOException eï¼ {
// TODO Auto-generated catch block
e.printStackTraceï¼ï¼ï¼
}
//takeScreenShotsï¼âEfilmSeatSnapShotâï¼ï¼
}
}
è¿ä¸ªä¾åæ¯é便åçï¼å¯è½ä¸å¤ä¸¥è°¨ã大ä½å°±è¿ä¹ä¸ªæ åµå§ãä¸ä¸æ¥å°±æ¯ç¼è¯æ§è¡äºï¼å æä¸ææºusbæ¥å£ï¼ç¶åæå¼cmdï¼æ§è¡ï¼
æ¾å°SDKIDï¼ä¹å°±æ¯android createä¸ç-tåæ°ï¼
cd C:\ PROGRAM\android-sdk\tools
android list
æ¾å°tåæ°çå¼ä»¥åï¼
cd C:\ PROGRAM\android-sdk\tools
android create uitest-project -n TAppWorkAssistV1 -t -p C:\androidèªå¨å\Tv2.0\TestSetting
cd C:\androidèªå¨å\Tv2.0\TestSetting
ant build
cd C:\androidèªå¨å\Tv2.0\TestSetting\bin
adb push TAppWorkAssistV1.jar /data/local/tmp/
adb shell uiautomator runtest TAppWorkAssistV1.jar -c com.uia.example.my. TAppWorkAssistV1
çäºçï¼å¥½å没æä»ä¹ç¹å«å¼å¾è§£éç
-n TAppWorkAssistV1ï¼ç±»å
-p: 项ç®æå¨ç®å½
Ant build æè¿ä¸ªç±»ç¼è¯æä¸ä¸ªjarå ï¼TAppWorkAssistV1.jar
ç¶åæjarå pushå°ææºä¸ï¼è°ç¨æ§è¡è¿ä¸ªç±»å°±å¯ä»¥äº
大è´æ¯è¿ä¹ä¸ªæ¥éª¤ï¼ä¸è¿æä¸ä¸ªé常éè¦çç»èï¼å°±æ¯å¦æä½ éè¦æ´çå¿ï¼å°±æ好æçé¢å ç´ ï¼æ 论å¨æçè¿æ¯å¸å±æ件ä¸çï¼é½å ä¸content-descriptionå±æ§ï¼å¹¶ä¿è¯å¯ä¸æ§ï¼æ ¹æ®ï¼
UiSelector:descriptionï¼String descï¼
Set the search criteria to match thecontent-description property for a widget.
é£å°±å¯ä»¥ç»ä¸åªä½¿ç¨è¿ä¸ä¸ªå¼ç¨çé¢å ç´ çæ¹æ³å°±è¡äºï¼å°±ä¸ç¨å»æ³æ¹è®¾æ³å©ç¨å ¶å®çå±æ§æ¥å¼ç¨äºã
uiautomator
UiAutomator是Android测试框架的一部分,用于自动化UI测试。 UiAutomator简介 UiAutomator是Android开发中的一个自动化测试框架,主要用于进行UI相关的自动化测试。它能够模拟用户的各种操作,如点击、滑动、输入文本等,从而实现对应用程序的自动化测试。这个框架提供了丰富的API,使得开发者可以轻松地编写出强大的测试用例。 UiAutomator的主要功能 UiAutomator框架包含了多种测试组件,其中包括: 1. UI测试器:用于模拟用户操作,包括点击按钮、滑动屏幕、输入文本等动作。这使得开发者无需手动操作设备,就可以对应用程序的UI进行测试。 2. UI验证器:用于验证应用程序的UI元素是否按照预期显示。开发者可以定义特定的验证规则,然后UiAutomator会检查这些规则是否被满足。 3. 布局检查器:允许开发者在运行时查看和编辑应用的界面布局,以便发现和解决布局问题。 使用UiAutomator的优势 使用UiAutomator进行UI自动化测试具有以下优势: 1. 提高测试效率:自动化测试可以大幅度提高测试效率,减少人工操作的繁琐性。 2. 减少人为错误:自动化测试能够避免因人为因素导致的测试误差。 3. 持续集成:UiAutomator可以与持续集成工具结合使用,确保每次代码变更后都能自动进行测试,从而确保软件质量。 总的来说,UiAutomator是Android开发中一个强大的UI自动化测试框架,能够帮助开发者提高测试效率,确保应用程序的UI质量。功能测试工具:UiAutomator
UiAutomator是Android系统提供的功能测试工具,用于进行UI功能测试。基于黑盒测试的原理,无需深入了解程序内部实现,只需验证操作结果是否符合预期。 传统的人工验证方式耗时且易出错,而自动化测试通过编写测试代码执行任务,覆盖多种使用场景,显著提升测试效率和可靠性。UiAutomator工具的优势有: (1) 灵活性高,易于使用。 (2) 学习曲线平缓。 (3) 约束较少。 (4) 可模拟%以上的手动操作。 (5) 具有良好的扩展性。下载与配置
为了运行UiAutomator,需要安装JDK、ATD等软件。 JDK:版本1.8及以上。 Android Studio。 Android SDK。安装JDK
从官网下载JDK1.8,选择位或位。 安装下载的安装包。 配置环境参数: 建立JAVA_HOME环境变量,路径为JDK安装路径,如:C:\Program Files\Java\jdk1.8.0_\。 在PATH中添加:%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin。 建立CLASSPATH环境变量,值为:%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;。 在命令行中输入相关命令验证环境建立成功。安装SDK
下载SDK文件,配置环境变量:%ANDROID_HOME%,在PATH中添加:%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;。 在Android Studio下建立UiAutomator环境,需要更新SDK中的tools目录。 通过命令行操作完成SDK目录结构的更新。 同步更新后,将新生成的tools目录文件复制到原有tool目录下。 删除原有tools目录,将tool目录改名为tools。 再次验证环境配置。配置开发测试代码
建立Android Studio的SDK
打开Android Studio,通过菜单“File->Other Settings->Default Project Structure”选择下载的SDK路径。 新建项目,配置项目名称、包名称、工作路径、使用语言及最小API版本(注意最小API版本不低于)。 配置成功后,将项目转换为Android视图模式查看,打开build.gradle文件,添加相应的类路径配置。 项目目录结构将如图所示,分层为普通单元测试区、Android单元测试区、Android产品代码区。建立测试工程
通过菜单“File->New->New Project”建立测试工程。 进行配置,包括项目名称、包名称、工作路径、使用的开发语言及最小API版本。 完成配置后,根据需要将项目设置为按Android视图模式查看。 在Android单元测试区建立测试代码(如myclass),并按照文件结构组织。正厚软件干货|UIAutomator2的使用教程(上)
UIAutomator2使用教程(上)
成都正厚沈瑜老师提供 UIAutomator2是一款Python库,专为Android UI自动化测试设计,它基于Google的uiautomator,可轻松操作APP中的控件。GitHub地址为:github.com/openatx/uiauto... 它支持Python编程,允许测试人员在PC上编写代码,通过HTTP请求远程操控手机应用,极大地提高了测试效率。 其工作原理包括客户端(Python脚本)发送请求,设备端的atx-agent接收并执行,通过uiautomator2服务完成操作。具体步骤如下:在设备上安装atx-agent,启动uiautomator2服务,监听指定端口。
PC上执行Python脚本,向设备发送HTTP请求。
设备接收到请求,执行相应操作。
安装步骤
开始前确保你的环境满足:Python 3.6+,Android 4.4+。安装adb后,通过pip安装uiautomator2及其依赖(如需截图,还需安装pillow):pip install --pre uiautomator2
pip install pillow
在设备上使用`python -m uiautomator2 init`安装atx-agent,支持指定设备或全局安装。可以考虑使用国内镜像以提高安装速度。
最后,安装weditor辅助元素识别和编写自动化测试代码,通过`pip install -U weditor`完成,Windows用户可以创建桌面快捷方式。
连接手机时,通过adb devices找到设备序列号或IP,输入到weditor中,点击Connect即可实时同步手机界面,便于自动化测试。