关于研究UIautomator操作手机执行case

Android布局层次结构查看工具-uiautomatorviewer介绍 uiautomatorviewer基本介绍 Android平台上的uiautomatorviewer工具已经存在很多年,不熟悉的朋友一定会觉得它的名字很怪异……,分开来看就清楚多了:UI Automator Viewer(中文直译:界面自动化 查看器),这个工具是测试框架UI Automator的配套工具(随该测试框架一同推出,专门用于查看布局层次结构),利用该工具可以查看当前Android设备屏幕上的控件信息,下方是我利用uiautomatorviewer工具截取的微信App的布局层次结构! ... 阅读详情
在Android 4.1发布的时候包含了一种新的测试工具– uiautomator ,uiautomator是用来做UI测试的。也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期。比如 登陆界面 分别输入正确和错误的用户名密码然后点击登陆按钮看看是否能否登陆以及是否有错误提示等。

功能性或者黑盒UI测试不需要测试人员了解程序如何实现的,只需要验证各种操作的结果是否符合预期即可。这样的测试可以分离团队的开发人员和测试人员。大家各干各的没有太多的交集。

常用的UI测试方式就是人工验证啦,就是测试人员拿着各种手机分别安装要测试的程序然后看看是否能正确完成各种预定的功能。但是这种验证方式是非常耗时间的,每次回归都要全部验证一边,并且还容易出现人为错误。比较高效和可靠的UI测试方式就是自动化测试。自动化UI测试创建测试代码来执行测试任务,各种测试任务分别覆盖不同的使用场景,然后使用测试框架来运行这些测试任务。

uiautomator 就是你的自动化UI测试工具。

概述

Android SDK在4.1中提供了如下工具来支持UI自动化测试:

  • uiautomatorviewer – 一个图形界面工具来扫描和分析应用的UI控件。
  • uiautomator – 一个测试的Java库,包含了创建UI测试的各种API和执行自动化测试的引擎。

要使用该工具,需要满足如下条件:

  • Android SDK Tools, Revision 21 or higher
  • Android SDK Platform, API 16 or higher
uiautomator 测试工具的工作流程

下面是uiautomator 工作流程概述:

  1. 安装要测试的应用到手机中,分析应用的UI界面元素 并确保被测试应用的各个控件可以被测试工具获取到。
  2. 创建知道测试案例来模拟应用中的用户操作步骤。
  3. 编译测试案例代码为Jar包并复制该Jar包到安装了待测应用的测试手机中。
  4. 运行测试并查看结果
  5. 修改任何发现的bug,然后修复并重新测试。
分析待测应用的UI元素

在开始编写测试案例代码之前,需要熟悉待测应用的UI元素。可以通过uiautomatorviewer 工具来获取应用的界面截图并分析。uiautomatorviewer 工具提供了一个便利的方式来查看UI布局结构,并且可以查看各个控件的相关属性。利用这些信息可以用来创建UI测试代码。

uiautomatorviewer 工具截图

uiautomatorviewer 工具截图

分析待测应用UI界面的步骤如下:

1. 把Android手机连接到电脑上 
2. 打开命令行窗口并导航到目录 /tools/ 
运行如下命令:$ uiautomatorviewer

windows下运行 uiautomatorviewer.bat 命令 
3. 点击uiautomatorviewer 工具右上角文件夹按钮旁边的“Device Screenshot”按钮来获取当前 屏幕界面信息。 
注意:如果当前电脑连接了多个设备,通过设置ANDROID_SERIAL环境变量来指定要分析的设备。步骤如下: 
a.运行如下命令获取连接到电脑的设备序列号 
$  adb devices 
b.设置ANDROID_SERIAL为需要测试的设备序列号 
Windows:set ANDROID_SERIAL= 
Unix: export ANDROID_SERIAL= 
如果电脑只连接一个设备则无需设置ANDROID_SERIAL 环境变量。

4. 查看待测应用的UI界面元素属性 
把鼠标放到uiautomatorviewer工具左边的截图中的控件上来查看该控件的属性。属性显示在右侧界面下方,上方显示当前界面的布局结构。 
点击右侧上方的黄三角按钮(Toggle NAF Nodes)来查看不能被uiautomator测试工具访问到的控件。这些控件只设置了有限的属性,所以导致uiautomator无法获取到这些控件。所以你可能很难测试这些控件。这种情况下你可以要求开发者为这些控件添加必要的属性,比如 如果是ImageView或者ImageButton应该添加android:contentDescription属性。

测试准备工作

在开始使用uiautomator 之前需要完成如下准备工作:

把待测应用安装到测试手机(设备)上

当你准备测试的时候,待测的应用可能还没有发布到市场上。但是你应该具有该应用的APK安装文件,你可以通过ADB工具来安装待测应用到手机中,或者通过其他工具来安装Apk。

辨别待测应用UI控件

在开始编写uiautomator测试代码之前,需要先辨别待测应用的UI控件元素。一般而言,优秀的待测应用的UI元素应该是可见的并且用户可以操作的。这些UI元素也应该具有可见的文本标签、android:contentDescription值或者二则兼具。

通过uiautomatorviewer 工具可以查看应用的可见控件。具体使用情况见上面所述。

确保待测应用是可访问的

由于uiautomator 工具依赖Android设备的可访问行来获取UI控件,所以这不是非常重要的。要支持uiautomator 工具需要一下条件:

  • 使用android:contentDescription属性给 ImageButton, ImageView, CheckBox和其他控件设置标签。
  • 使用android:hint 属性来标记EditText 控件,而不是使用里面的文本(文本内容用户是可以修改的)。
  • 对于用来提供操作视觉反馈的UI(文本或者图标),都添加一个android:hint 属性来识别。
  • 确保所有用户可操作的界面元素都可以通过方向控制键选中(例如轨迹球)。
  • 通过uiautomatorviewer 工具来确保所有的UI元素都可以被测试工具访问到。还可以通过“辅助功能”(在设置界面)中的“TalkBack”等服务来测试UI的可访问性。
设置开发环境

如果你使用的是Eclipse(Adt),则Android SDK提供了额外的工具来帮助你编写uiautomator测试代码和打包测试项目。在Eclipse中创建uiautomator测试项目的过程如下:

  1. 创建新的Java项目(注意不是Android项目)。在该项目中来创建测试代码。
  2. 在Project Explorer视图中,右键点击测试项目,选择“ Properties > Java Build Path”,然后选择“Libraries” tab界面。在“Libraries”界面选择“ Add Library > JUnit”来添加JUnit3 库。然后点击“Add External JARs… ”并导航到Android SDK目录。选择platforms目录下面的 uiautomator.jar 和 android.jar文件。
  3. 设置好的build path如下图:
uiautomator项目类路径设置
详细步骤:

要写UIAutomator的testcase,首先要用Eclipse创建一个Java Project

需要将Junit 的lib加入到工程里

还要添加android.jar和uiautomator.jar,这两个文件在android sdk中,没有升级SDK的朋友,建议升级到最新的SDK,因为uiautomator还有些不完善,在老的SDK上有些功能还不能用


创建好工程后,就可以写case了,我们使用官方帮助中的例子,为了简单,采用官网上的例子,并且精简至一个home命令,方便大家把流程先跑起来

http://developer.android.com/tools/testing/testing_ui.html


// Import the uiautomator librariespackage com.uia.example.my;import com.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;public class test extends UiAutomatorTestCase {      
public void testDemo() throws UiObjectNotFoundException {         
// Simulate a short press on the HOME button.      getUiDevice().pressHome();   
}}


创建一个编译配置文件

<android-sdk>/tools/android create uitest-project -n <name> -t 1 -p <path>

说明一下各个参数的作用,如果已经将android sdk的路径配置到了系统的path中,输入命令“android create uitest-project”就可以查看到相应的帮助

 -n --name    : Project name.  就是在eclipse中创建的项目的名字。

-t --target  : Target ID of the new project. [required]   这个id是本机上android targets的id,可以通过命令 “android list”来查询,得到如下图的结果,选择android-17以上版本前面所对应的id


根据我电脑的情况我的命令是这样的

D:\work\android-sdk\tools>android create uitest-project -n UiAutomator -t 6 -p D:\work\eclipse\workshop\UiAutomator

创建成功的输出如下

从eclipse中可以看到有3个新增加的文件

在build.xml上点击右键,选择“Run As” -> "Ant Build",可以看到下面的输出,这个输出实际上是一个帮助,是对build.xml的作用进行说明的。在build.xml中配置上相应的选项可以完成相应的操作。

在build.xml的配置上,将default后面的选项改为"build"后,就可以build jar包了。

同样执行Run As操作,就可以build 成功了。目标文件声称在工程目录下的bin文件夹下。

剩下的操作就和官方网站上一样了。将jar push到手机中,然后执行就可以了

adb push UiAutomator.jar /data/local/tmp/

adb shell uiautomator runtest UiAutomator.jar -c com.uia.example.my.test


 

uiautomator项目类路径设置

如果你不使用Eclipse,则需要确保/platforms/目录中的uiautomator.jar 和 android.jar 位于项目Build path中。

配置好开发环境后就可以开始编写测试代码了。

创建uiautomator 测试案例

uiautomator 测试案例(Test case)需要继承至UiAutomatorTestCase 类。而UiAutomatorTestCase 类继承至junit.framework.TestCase类,所以可以用JUnit的Assert类来比较测试结果。

UI测试的首要任务就是访问测试手机。一般都是从手机的主屏开始测试的。通过uiautomator 提供的API可以从主屏来模拟用户的操作。下面会介绍具体示例。

uiautomator API

uiautomator API在 uiautomator.jar 文件中。这些API分别如下:

UiDevice

代表设备状态。在测试中,可以通过UiDevice实例来检测设备的各种属性,例如当前的屏幕方向以及屏幕尺寸。同时还可以通过UiDevice实例来执行设备级别的操作,例如 把设备设置为横屏或者竖屏、按下Home按键等。

如下是模拟按下Home按键的代码: 
getUiDevice().pressHome();

UiSelector

代表一个搜索UI控件的条件。如果发现多个满足条件的控件则会返回第一个控件。返回的结果为UiObject对象。在构造UiSelector的时候可以组合使用多个属性来定位具体的控件。如果没有找到控件则会抛出 UiAutomatorObjectNotFoundException 异常。还可以使用childSelector()函数来嵌套UiSelector 对象。例如,下面的代码演示了如何在当前界面中查找第一个ListView中的带有文本属性为Apps的子控件。

UiObject appItem = new UiObject(new UiSelector().className("android.widget.ListView").instance(1).childSelector(newUiSelector().text("Apps")));
UiObject

代表一个UI控件。通过UiSelector来查找UiObject。 
如下示例代码演示了如何查找当前显示界面中的取消按钮和确认按钮:

UiObject cancelButton = new UiObject(new UiSelector().text("Cancel"));UiObject okButton = new UiObject(newUiSelector().text("OK"));

查找到的UiObject实例可以在其他测试代码中重用。需要注意的是:每次使用UiObject做操作的时候uiautomator 都会在当前屏幕重新查找该控件。

如下代码uiautomator 工具在当前界面查找文本内容为“OK”的控件。如果存在并且可用则模拟用户点击该控件。

if(okButton.exists() && okButton.isEnabled()){okButton.click();}

还可以限制仅仅查找特定类型的控件。例如 如下代码只查找文本为“Cancel”和“OK”的android.widget.Button类型控件。

UiObject cancelButton = new UiObject(new UiSelector().text("Cancel").className("android.widget.Button"));UiObject okButton = new UiObject(new UiSelector().text("OK").className("android.widget.Button"));
UiCollection

代表控件的集合。获取UiCollection的方式和UiObject一样,通过 UiSelector查找。 UiCollection对应Android系统中的ViewGroup以及子控件。 
如下代码演示如何通过UiSelector来获取包含视频集合的UiCollection。

UiCollection videos = new UiCollection(new UiSelector().className("android.widget.FrameLayout"));

如果每个视频是放到LinearLayout中的,则可以通过如下方式获取视频的数目:

int count = videos.getChildCount(new UiSelector().className("android.widget.LinearLayout"));

如果需要查找标签为“Cute Baby Laughing”的视频,并点击。则可以通过如下方式:

UiObject video = videos.getChildByText(new UiSelector().className("android.widget.LinearLayout"), "Cute Baby Laughing");video.click();

同样还可以模拟其他用户操作。例如,模拟选择视频的操作如下:

UiObject checkBox = video.getChild(new UiSelector().className("android.widget.Checkbox"));if(!checkBox.isSelected()) checkbox.click();
UiScrollable

代表可滚动的控件。可以用UiScrollable来模拟水平或者垂直滚动的UI元素。如果需要操作的元素在屏幕外需要滚动屏幕才能看到的情况下需要使用UiScrollable。

例如,下面的代码显示了如何模拟滚动到“Settings ”菜单并点击“About tablet”菜单的操作。

UiScrollable settingsItem = new UiScrollable(new UiSelector().className("android.widget.ListView"));UiObject about = settingsItem.getChildByText(new UiSelector().className("android.widget.LinearLayout"), "About tablet");about.click()

其他API参考uiautomator api文档。

一个简单的uiautomator 测试案例

如下是一个简单的测试案例代码,模拟了点击Home键回到主屏,然后点击所以应用按钮打开所有应用列表,并滚动到时钟应用。打开时钟应用 并选择闹铃界面的第一个闹钟设置,修改该设置的开关。然后返回到时钟界面再进入倒计时界面。

package com.uia.example.my;
import android.widget.ListView;
import android.widget.Switch;
import com.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;
public class LaunchSettings extends UiAutomatorTestCase { 
// TODO 重要注意: 在运行该测试代码的时候 需要先把手机语言环境设置为英文。 
public void testDemo() throws UiObjectNotFoundException { 
// 模拟 HOME 键点击事件 
getUiDevice().pressHome(); 
// 现在打开了主屏应用,模拟点击所有应用按钮操作来启动所有应用界面。 // 如果你使用了uiautomatorviewer来查看主屏,则可以发现“所有应用”按钮的 // content-description 属性为“Apps”。可以使用该属性来找到该按钮。 
UiObject allAppsButton = new UiObject(new UiSelector().description("Apps"));
// 模拟点击所有应用按钮,并等待所有应用界面起来 
allAppsButton.clickAndWaitForNewWindow(); 
// 在所有应用界面,时钟应用位于Apps tab界面中。下面模拟用户点击Apps tab操作。 // 找到 Apps tab 按钮 
UiObject appsTab = new UiObject(new UiSelector().text("Apps")); 
// 模拟点击 Apps tab. 
appsTab.click(); 
// 然后在 Apps tab界面,模拟用户滑动到时钟应用的操作。 
// 由于Apps界面是可以滚动的,所有用 // UiScrollable 对象. 
UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true)); 
// 设置滚动模式为水平滚动(默认为垂直滚动) 
appViews.setAsHorizontalList(); if (allAppsButton.exists() && allAppsButton.isEnabled()) { 
// allAppsButton在当前界面已经不可见了 所以这里不会执行 
allAppsButton.click(); } 
// 查找时钟应用并点击 
UiObject settingsApp = appViews.getChildByText( new UiSelector().className(android.widget.TextView.class.getName()),"Clock"); settingsApp.clickAndWaitForNewWindow(); 
// 验证当前显示 的应用包名为时钟 
UiObject settingsValidation = new UiObject(new UiSelector().packageName("com.google.android.deskclock")); 
// 如果不存在则出错提示
assertTrue("Unable to detect Clock", settingsValidation.exists()); 
// 模拟点击时间tab 
UiObject clock = new UiObject(new UiSelector().description("Clock")); clock.clickAndWaitForNewWindow(); 
// 模拟点击下方的闹钟图标 
UiObject alarms = new UiObject(new UiSelector().description("Alarms")); 
alarms.clickAndWaitForNewWindow(); 
UiScrollable list = new UiScrollable(new UiSelector().className(ListView.class.getName())); 
if (list.getChildCount() > 0) { 
UiObject listIndex0 = list.getChild(new UiSelector().index(0)); 
UiObject switchBtn = listIndex0.getChild(new UiSelector().className(Switch.class.getName())); 
boolean isChecked = switchBtn.isChecked(); 
switchBtn.click();
} 
// 模拟点击返回键 
getUiDevice().pressBack(); 
UiObject timer = new UiObject(new UiSelector().description("Timer")); 
timer.clickAndWaitForNewWindow(); 
}}
打包测试代码并在测试机上运行

如下步骤打包测试代码并在测试机运行的步骤:

1.创建打包测试代码的Build脚本。通过如下命令来生成Build脚本:

<android-sdk>/tools/android create uitest-project -n <name> -t 1 -p <path>
<name>是包含测试代码的项目名称,<path>是包含测试代码的项目文件路径。-t后面的1是Android sdk版本id。

注意: 在创建Build脚本之前,已经创建好了测试项目并编写好了测试代码。只不过该测试项目还没有包含打包脚本所以无法打包运行。在创建Build脚本的时候,<name>属性就是测试项目的名称、<path>就是已经创建的测试项目在电脑中的文件夹路径。 如果电脑上安装了多个版本的Android sdk,则需要运行/tools/android list target 来查看每个SDK的id。选择4.1以上的id即可。

2. 设置ANDROID_HOME 环境变量。

Windows:set ANDROID_HOME=<device serial number> 

Unix:export ANDROID_HOME=<device serial number> 

3. 打开命令行创建,导航到第一步中的目录中,运行 ant build 来打包。

4. 通过adb push命令把上一步打包出来的jar文件复制到测试手机中。

adb push <path>/bin/<name>.jar /data/local/tmp/

类似如下代码:

adb push ~/dev/workspace/LaunchSettings/bin/LaunchSettings.jar /data/local/tmp/

运行uiautomator 测试
下面是运行 LaunchSettings.jar jar包中测试代码的命令。测试代码位于com.uia.example.my包中。

adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings

关于uiautomator 的更多信息参考这里:http://developer.android.com/tools/help/uiautomator/index.html

最佳实践

下面是一些使用uiautomator 做UI测试的最佳实践

  • 在待测应用可能运行的尽可能多的设备上跑uiautomator 测试。例如 在不同的屏幕密度、不同的屏幕尺寸上运行测试。
  • 还应该在一些常规场景下测试UI,例如 电话打入情况、网络连接断开的情况等。
UI Automator Viewer的使用 原因是在于,uiautomatorviewer.bat中,需要知道SDK下的子目录platform-tools的路径,即bat文件中的“%prog_dir%”,因此我们需要修改uiautomatorviewer.bat中最后一行代码,将“%prog_dir%”替换为platform-tools的实际目录。从左至右分别用于:打开已保存的布局,获取详细布局,获取简洁布局,保存布局。通过使用UI Automator Viewer,我们可以在没有代码的情况下,查看控件布局,并获取UI的ID,用于之后的脚本编写。 阅读详情

相关推荐

『与善仁』Appium基础 — 19、元素定位工具之UI Automator Viewer

文章目录(一)uiautomatorviewer定位工具1、uiautomatorviewer介绍2、uiautomatorviewer工具打开方式3、uiautomatorviewer布局介绍4、uiautomatorviewer工具的使用 之前我们在做web页面自动化的时候就说过,元素定位是页面自动化的第一步。 同理App自动化测试的第一步,也是元素的定位。 在APP中定位元素的话,需要借助一些元素定位工具。 APP中的元素定位工具大致有三种: uiautomatorviewer Appium Ins

繁华似锦Fighting 1520

UI Automator Viewer工具的使用

一.uiautomatorviewer介绍 使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。该工具位于SDK目录下的tools\bin子目录下。 二、启动uiautomatorviewer 1、在SDK的安装目录下双击uiautomatorviewer.bat就可以启动 2、也可以使用cmd命令进行启动,cd到tools目录下,然后输入uiautomatorviewer.bat回车后启动服务。启动界面如下: 注意:点击uiautoma.

sheep0924的博客 1万+

基于SSM框架的校园快递管理系统设计与实现:Java毕业设计实战指南

在Java Web开发领域,SSM(Spring+SpringMVC+MyBatis)框架组合是构建企业级应用的核心技术栈,它通过清晰的MVC分层架构实现了业务逻辑、数据访问与表现层的解耦。其原理在于Spring的IoC容器管理对象生命周期,Spring MVC处理请求分发,MyBatis完成对象关系映射,这套组合为开发者提供了从数据库操作到前端交互的完整解决方案,技术价值在于能帮助开发者深入理解Web应用从配置到运行的全过程。掌握SSM框架对于夯实Java开发基础、应对企业级项目开发至关重要,其典型应用场

weixin_34295316的博客 414

移动端测试工具 uiautomatorviewer完全使用攻略

原因是我连接的是真机,而操作系统是Android13,但是自带的uiautomatorviewer不支持Android8.0之后的操作系统了。

公众号【伤心的辣条】资料领取~ 4186

深入解析UIAutomatorViewer:Android自动化测试与元素定位工具

本文还有配套的精品资源,点击获取 简介:UIAutomatorViewer是Android SDK的一部分,专门用于UI自动化测试和元素分析。它能捕捉设备或模拟器上的UI组件层次结构,并提供元素信息如坐标、大小及XPath等,这对于自动化测试尤其重要。文章详细介绍了UIAutomatorViewer的使用步骤、相对XPath的应用和一些注意事项,以帮助开发者有效进行自动化测...

weixin_29781865的博客 3721

【高低温试验】试验报告模板

高低温循环试验,验证被测设备(DUT)在极端高温、低温环境下的性能稳定性、功能可靠性及安全性,确保其符合设计规范和相关标准(如GB/T 2423.1、GB/T 2423.2)。:验证设备在剧烈温度变化下的耐受能力(如-40℃↔+85℃,温变速率≥10℃/min)。低温测试标准:GB/T 2423.2-2008(温度-40℃,保持时间4小时):模拟高温高湿环境(如温度+60℃,湿度95%RH),测试防潮性能。

电路巫师把一切不可能变成不可能 1565

自动化:Python、windows、安卓、网页、rpa、autojs、firerpa(抓包逆向ai)

通过VS安装一步到位更省事。如果这个环境变量是空的,uiautomator 将返回 connect_usb,您需要确保只有一个设备连接到计算机。然后就会自动安装库所需要的设备端程序:uiautomator-server,atx-agent,openstf / minicap,openstf / minitouch。因为 run_main 执行的时候,是打印所有用例文件+名称,而通过测试套件 添加 类名称时,执行方式不一样。也可以使用pyautogui库帮助文档的方法,不过本人认为使用上面的方法,更加便利。

freeking101的博客 2万+

【车辆仿真】从0开始建立dSPACE RT Simulink工程:CAN通信(RTICANMM方法)

【工程环境信息】:本文基于链接文章搭建SCALEXIO Rack RTPC总线节点,用于与AutoBox通信硬件:上位机:惠普台式PC(Windows 11专业版)下位机(实时机):AutoBox (DS1006)板卡:DS6342软件:本文所使用的DBC链接提示:以下是本篇文章正文内容,下面案例可供参考!!!的部分一定记得配置,其他的按需配置RTICANMM的灵活度非常高,尽可能参考Help文档,理解相应的配置内容官方有RTICANMM的样例工程,在下方路径。

winnizap的博客 2381

老李分享:接电话扩展之uiautomator 1

老李分享:接电话扩展之uiautomator poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200。 问题 在做自动化测试的时候,我们遇到接电话的case。这个问题的难点在于要自动的实现某一个时刻有电话打进来才能起作用。像我上...

weixin_30888027的博客 110

psasp和matlab,PSASP与Matlab/SimPowerSystems联合仿真接口方法研究

[1]李亚楼,吴中习.Matlab模型接入PSASP暂态稳定计算模块的方法[J].电网技术,2008,32(19):31-36.Li Yalou,Wu Zhongxi.An Approach to Interface Matlab Model with PSASP Transient Stability Module [J].Power System Technology,2008,32(19):...

weixin_39636245的博客 1081

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法 在Windows的搜索框中输入Windows安全中心,搜索到后将其打开 点击病毒和威胁防护将鼠标移动到Microsoft Defender防病毒选项处,将定期扫描打开 下滑找到管理设置 先关闭篡改防护,再点击添加或删除排除项 先点击添加排除项,再点击文件,选择报出异常的文件,将其添加到排除项中,过程中会存在跳框确认,皆点击确定,完成后就可以运行报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件异常的文件

123 2万+

如何选择Android自动化框架的几点拙见

首先由于我自己也是个新手,也是在学习各种框架然后给公司项目选定相应自动化框架,研究移动自动化测试框架也就近段时间而已,所以我只能从我自己今天为止的认知角度给各个框架抒发我自己的拙见,你看是否能从中接纳一二吧(对于我自己的话还需要再花一段时间去学习各个框架才能确定哪个/些是适合我们项目的了,也许到时我会写个正式的总结)。 根据你的要求,应该不会考虑MonkeyRunner和Robotiu...

weixin_30426065的博客 114

SAP_SD模块深度解析SAP信用检查中的“未清数量”取值逻辑

确认数量 vs 订单数量:如果系统配置了可用性检查(ATP),并且订单只确认了部分数量,信用检查通常只占用已确认数量的额度(具体取决于信用组的配置)。在SAP中,未清订单数量的计算并非简单读取订单行项目的目标数量(VBAK-KWMENG),而是基于**计划行(Schedule Lines)**层级来汇总的。状态的转换点:当交货单创建(VL01N)并保存时,这部分数量对应订单的“未清订单数量”减少,“未清交货数量”增加。业务人员眼中的未清数量很简单:“我卖了100个,发了30个,未清就是70个”。

我小时候很黑的博客 309

用Appium让Android功能自动化测试飞起来

前言 做Android端功能自动化已有2年多的时间了,使用过的功能自动化框架有Robotium、Uiautomator、Appium。最近研究自动化case复用的方案,调研了Appium的自动化框架,并将其应用到银行一账通的标版中,本文详细介绍基于Appium的Android功能自动化实战经验。主要包括以下几方面内容: Appium框架原理介绍 Appium框架常用API介...

weixin_30371875的博客 146

新能源汽车整车控制器(VCU)深度全解:硬件原理、工作流程、接口设计与高压安全实战

整车控制器(VCU,Vehicle Control Unit)是新能源纯电动、混动汽车的核心决策大脑,相当于汽车的“中枢神经系统”。它不直接驱动电机,却统筹电机控制器(MCU)、电池管理系统(BMS)、充电机(OBC)、DC/DC、空调、热管理、底盘等全部部件,负责驾驶意图解析、动力输出控制、高压上下电管理、故障安全保护、能量优化等关键任务。VCU所有设计均围绕车规级环境适应性、功能安全(ISO 26262)、实时性、高压安全性四大核心目标,与通用控制器完全不同。

优快云-新能源汽车研发测试专业博主 2475

11、基于多阵列电极的表面肌电信号运动估计

本文介绍了一种基于多阵列电极的表面肌电信号运动估计技术,旨在实现对手腕和手指运动的高精度估计,解决传统人机接口在操控多自由度机器人时的局限性。通过多阵列电极系统采集前臂肌肉活动信号,结合独立成分分析(ICA)和非负矩阵分解(NMF)等信号处理方法,提取肌肉协同作用,进而生成运动指令以控制机器人或假肢手。文章对比了多阵列电极与传统电极的优势,展示了运动估计算法的整体流程,并以假肢手控制为例说明其实际应用。最后探讨了该技术在测量精度、应用拓展、智能化和便携化等方面的未来发展方向。该技术为假肢控制、康复训练和人机

ik678901234的博客 87

基于视觉语言大模型的UI自动化测试用例生成实践

视觉语言大模型(VLM)作为多模态人工智能的重要分支,通过在海量图像-文本对数据上训练,实现了对视觉信息的深度语义理解。其核心原理在于将像素级图像特征与自然语言描述进行对齐,从而能够解析图像中的对象、关系及潜在意图。这一技术为自动化测试领域带来了革新价值,它能够将静态的UI截图转化为结构化的操作逻辑描述,显著降低测试脚本编写与维护的复杂度。在软件测试的工程实践中,该技术尤其适用于UI元素识别、测试步骤生成等场景,能够辅助测试工程师快速构建自动化用例。本文聚焦于利用Step3-VL-10B-Base等VLM模

weixin_34008805的博客 311

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ADB安卓调试桥:从原理到实践,打造自动化设备管理助手

Android Debug Bridge(ADB)是连接计算机与安卓设备的核心调试桥梁,其客户端-服务器架构实现了对设备底层服务的标准化访问。这一机制解决了图形界面工具在批量操作、深度信息获取和跨设备自动化方面的局限,为应用管理、系统监控和自动化测试提供了强大的技术支撑。通过脚本化组合ADB命令,开发者与进阶用户能够高效实现APK批量备份、应用状态监控及自动化任务执行,显著提升设备管理效率。本文以构建“设备管理助手”为例,深入解析ADB的核心原理与工程实践,涵盖环境配置、命令组合及安全实践,助您安全解锁安卓

weixin_34268310的博客 388

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

使用uiautomator做UI测试

转自:http://blog.chengyunfeng.com/?p=504 在Android 4.1发布的时候包含了一种新的测试工具–uiautomator,uiautomator是用来做UI测试的。也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期。比如 登陆界面 分别输入正确和错误的用户名密码然后点击登陆按钮看看是否能否登陆以及是否有错误提示等。

奋斗 2万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android Studio 中使用uiautomatorviewer插件

这个插件拆分出来就是UI Automator Viewer(界面 自动化 查看器),本身是Android的UI Automator测试框架(Ui自动化框架)的配套工具,该工具可以查看当前设备屏幕上的控件信息。表示控件所在应用的包名,选中控件是相机上的一个控件,所以package值是org.codeaurora.snapcam,这个就是表示相机app的包名。当你单击一个控件后,就会显示出来控件的详细信息,或者单击右侧的View树展示区,也会在屏幕显示相应的控件。

qrx941017的博客 1万+

探索UI自动化测试新星:UIAutomatorView

探索UI自动化测试新星:UIAutomatorView 去发现同类优质开源项目:https://gitcode.com/ 在软件开发中,尤其是Android应用的测试领域,自动化测试扮演着至关重要的角色。UIAutomatorView就是这样一款工具,它基于Google的UIAutomator框架,帮助开发者和测试工程师以更高效、更直观的方式进行UI元素的定位与交互。让我们一起深入了解一下这个项目...

gitblog_00006的博客 557

Android万能布局检查器UI Automator Viewer使用教程、环境配置和Mac无法打开问题解决(uiautomatorviewer,android studio,layer,查看,错误)

1 问题背景 作为Android开发者的我们一般用Android Studio自带的Layout Inspector(布局检查器)来检查可调试APP的实时布局层级: 但是Layout Inspector有很大的局限性,它只能用来调试那些“可调试APP”,即该APP的AndroidManifest.xml文件中Application标签的android:debuggable属性的值为true: <?xml version="1.0" encoding="utf-8"?> <manifest

快乐李同学的博客 1万+

手机控件查看工具uiautomatorviewer

1.工具描述 用来扫描和分析Android应用程序的UI控件的工具. 2.如何使用 1.进入SDK目录下的tools目录,打开uiautomatorviewer 2.电脑连接真机或打开android模拟器 3.启动待测试app 4.点击uiautomatorviewer的左上角Device Screenshot,会生成app当前页面的UI控件截图 5.选择截图上需要查看的控件,即可浏览该控件的id,class,text,坐标等信息 ...

q18735924674的博客 6456

UIAutomatorViewer独立包

这个工程是谷歌官方UIAutomatorViewer改造而来,用来抓取UIAutomator控件的工具,支持独立运行,但因为其依赖于swt,所以需要在mac和windows下分别编译。下载地址:https://github.com/cmlanche/uiautomatorviewer-standalone。

qq_15050521的博客 1774

Appium元素定位工具uiautomator入门到实践一网打尽

uiautomatorviewer是另一种定位工具; uiautomatorviewer是android-sdk自带的元素定位工具; 它是通过截屏分析XML布局文件方式,来提供控件信息的查看服务。

公众号【伤心的辣条】资料领取~ 1134
上一篇: 用JS获取上传文件的真实路径 fakepath的问题
下一篇: jar 转换为dll外部链接库 C#调用
Mind_Reader
博客等级 码龄12年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值