当前位置:首页 » 网页前端 » 安卓控件识别脚本工具
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

安卓控件识别脚本工具

发布时间: 2023-04-18 08:20:29

⑴ 怎么在用户控件中加脚本

你具体想怎么做?
updatepanel实在是不好用啊,非要用的话,需要先将js文件附加在页面上,然后用
ScriptManager
的RegisterClientScriptBlock
方法注册脚本

⑵ 安卓手机自动化测试工具是什么

一、首先说说手机自动化测试的原理
1、手机自动化测试的原理为PC上一个控制端(测试工具)与手机上的一个agent端,通过串口、USB或者无线方式将PC与手机终端相连,然后应用测试工具向手机发送请求或者命令,手机收到命令或者请求后,交给agent端解析,然后agent将这些解析的命令下发给手机的各个功能模块所能识别的命令,调用那些功能模块模拟操作。完成这些操作后,手机会返回一些信息,agent可以抓取这些信息,然后传回给PC端,这样就完成了一个完整的手机自动化测试。
2、关键点在于agent,有的公司是向自己的手机终端的软件功能模块中植入测试程序响应代码,有的公司可以利用MMI_Command的方式来控制手机终端;原理就是给手机提供一个响应的接口。
3、而对于PC控制端,这个测试脚本用各种编程语言都可以,看如何定义
4、而又的自动化测试设计成录制的机制,说通俗点,就是记录手工操作的键盘信息或者LCD的操作信息(LCD需要用到智能识别机制)
5、自动化测试框架的搭建方法是通用的,你需要有一套自己的测试框架才能保证自动化测试的顺利开展。
二、Android自动化测试方向:
1、CTS,CTS 测试基于Android instrumentation 测试, 其又基于JUnit 测试。说白了, CTS 就是一堆单元测试用例。这也是Java 语言的擅长部分。
2、 Monkey工具,Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
3、ASE,ASE 意思为Android 脚本环境, 即我们可以通过脚本(比如Python)调用Android 的功能,从而定制一些测试。比如打电话,发短信,浏览网页,等。我们可以扩充它的API(Java 部分), 并用python 脚本调用这些API, 从而实现丰富的测试功能。用于API 部分可以访问到Android 全部API, python 又能灵活部署测试,所以ASE 的扩展性非常好。
4、Robotium,该工具用于黑盒的自动化测试。可以在有源码或者只有APK 的情况下对目标应用
进行测试。Robotimu 提供了模仿用户操作行为的API,比如在某个控件上点击,输入Text
等等。(推举你可以研究一下这个工具,开源的,我有资料)
5、可以自己开发一个手机方面的自动化测试工具,原理上一样

⑶ 游戏界面识别不了控件 如何做自动化

游戏基本都是用OpenGl ES来绘制图像的橘伏,所以是无法获取控件的。可以使圆培携用点击屏幕坐标这种方法进行自动化中者测试

⑷ 如何使用AutoIT完成单机测试

1. 识别窗口的方法

编写自动化脚本的时候,首先要解决的一个问题就是如何(在众多窗口中)准确识别出目标窗口。一般来说,我们常把窗口的标题(Title)作为它的识别方法。但有时候只给出窗口标题还不够,还要同时给出标题及文件(text)。要获得某个窗口的标题是件很简单的事情(大多数窗口直接就可以看到),可以使用AutoIt提供的窗口信息工具(AutoIt Window Info)抓取。大多数窗口的标题都是显而易见的,例如系统自带的记事本程序(notedad.exe),它的默认标题是“无标题-记事本”,如图所示。窗口标题及其文本是大小写敏感的,包括标点符号在内,我们必须确保它们是完全匹配的。

AutoIt的大部分窗口函数都有窗口标题和文本参数,比如说下面的WinWaitActive函数。这个函数的功能是使脚本暂停执行并一直等到指定窗口出现且激活为止。

1
WinWaitActive(“窗口标题",["窗口文本"],[超时时间])
其中,“窗口标题”是必须指定的参数,而"窗口文本"和"超时时间"伏带都是可选参数。不过,也有些函数的窗口文本参数是必须指定的,如果想省略这个参数,只须指定空字符串("")作为参数即可。在参数窗口文本中指定一个空字符串甚至没有值(NULL),相当于告诉AutoIt任何文本都是有效的。

下面以记事本窗口为例说明上面提到的函数的两种用法:

1
2
3
WinWaitActive(“无标题-记事本")

WinWaitActive(“无标题-记事本","")

2. 窗口句柄

AutoIt中的变量可用来存储窗口句柄(Windows Handles)。所谓窗口句柄是指Windows自动分配给每个新创建的窗口的特殊值。窗口句柄可用来代替窗口标题参数。使用窗口句柄来代替窗口标题的好处是能够更加精确地识别窗口,例如,有时候我们会同时打开同一应用程序的多个副本,这些窗口具有完全相同的窗口标题和窗口文本,这时就可以利用窗口句柄的唯一性来准确地识别所指定的窗口。

很多函数如WinGetHandle、WinList和GUICreate都会返回窗口句柄,示例:

1
2
$handle=WinGetHandle(“无标题-记事本”)
WinClose($handle)
注意:不管当前的WinTitleMatchMode被设置为何种模式,窗口句柄始终可用。

3. 识别控件的方法

AutoIt提供了直接操作控件的功能。窗口上能看到的东西大多数都是以下控件中的一种:按钮、列表框、文本编辑框、静态文本等。例如,系统自带的记事本程序的主窗口也只是一个相对而言比较大的“编辑框(Edit)”控件罢了。正因为AutoIt提供了直接对控件操作的功能,我们再也不须要使用模拟键击等低级的方法来操作窗口了,这使得实现对窗口操作的脚本更加可靠。

AutoIt主要支持标准的Microosft控件。有些应用程序使用了大量的自定义控件,很像是标准的MS控件,但却无法被脚本程序识别,就需要特别的办法来解决。

在使用Control…()函数时,一些控件描述必须提供ControlID。通过这些描述才能正确识别控件。这些描述包括:

ID,内部控件的ID;
TEXT,控件文本,如"下一步"按钮;
CLASS,内部控件的类的名称,如"Edit"或"Button";
INSTANCE,枚举;
CLASSNN,类别名,如"Edit1";
以上的属性可以单独使用,也可以组合起来使用。具体使用哪一种属性,主要依据个人喜欢及从AutoIt窗口信息工具所获得的信息类型。一般而言,最好的方法就是使用控件ID,但如果控件ID无法获得或靠控件ID还不足以保证能识别目标控件,那么就须要使用其他的属性,或者属性的组合。

例如,发送文本到记事本的第1个Edit控件:

1
ControlSend(“无标题-记事本”,"","[CLASS:Edit;INSTANCE:1]”,"这是一些文本")


1
ControlSend(“无标题-记事本","","[CLASSNN:Edit1]”,"这是一些文本")


1
ControlSend(“无标题-记事本","","Edit1”,"这是一些文本")
单击“我的窗口”里面的控件,得到控件ID 254,就可以桥厅辩直接使用ID:

1
ControlClick(“我的窗口","","[ID:254]")


1
ControlClick(“我敏缺的窗口","",254)
例如单击第2个包含“完成”文本的按钮,就使用组合方法:

1
ControlClick(“我的窗口","","[CLASS:Button;TEXT:”完成";INSTANCE:2]")
如果要获得某个控件的句柄可使用ControlGetHandle函数。控件句柄是Windows赋予控件的独一无二的标识符,即每个被创建的控件都具有不同的句柄。示例如下:

1
$handle=ControlGetHandle(“Untitled- Notepad”,"","Edit1")

4. 操作窗口和控件

确定了窗口和控件的识别方法之后,我们就可以使用AutoIt提供的函数来完成对窗口和控件的操作。常用的函数如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
激活指定的窗口(设置焦点到该窗口,使其成为活动窗口)
WinActive("窗口标题"[,"窗口文本"])

关闭指定窗口
WinClose("窗口标题"[,"窗口文本"])

移动指定的窗口或调整窗口的大小
WinMove("窗口标题","窗口文本"],X坐标,Y坐标[,宽度,[,高度[,速度]]])

显示、隐藏、最小化、最大化或还原某个窗口
WinSetState("窗口标题","窗口文本",标志)

向指定控件发送鼠标点击命令:
ControlClick("窗口标题","窗口文本”,控件ID[,按键[,点击次数[,X坐标[,Y坐标]]]])

向指定控件发送命令:
ControlCommand("窗口标题","窗口文本",控件ID,"命令"[,"选项"])

设置输入焦点到指定窗口的某个控件上:
ControlFocus("窗口标题","窗口文本",控件ID)

向指定的控件发送字符串:
ControlSend("窗口标题","窗口文本",控件ID,"字符串"[,标志])

修改指定控件的文本:
ControlSetText("窗口标题","窗口文本",控件ID,"新文本",标志)

向激活窗口发送模拟键击操作:
Send("按键"[,标志])

执行鼠标点击操作:
MouseClick("按钮"[,X坐标,Y坐标[,点击次数[,速度]]])

执行鼠标拖拽操作:
MouseClickDrag("按钮",X1坐标,Y1坐标,X2坐标,Y2坐标[,速度])

5.验证

在完成测试用例的操作步骤之后,黑盒测试方法主要是通过检查和比较软件的输出结果(包括界面、文件、数据等)来验证测试的结果,判断软件是否存在缺陷。软件界面的检查主要是检查软件窗口和控件的各种状态、标题、文本和图片等信息,并将检查结果写入最终的测试报告中,以供分析。

5.1 验证窗口、控件状态常用的方法

1
2
3
4
5
6
7
8
9
10
获取窗口控件的坐标位置和大小等:
WinGetPos("窗口标题"[,"窗口文本"]) ;用于窗口
ControlGetPos("窗口标题","窗口文本",控件ID) ;用于控件

获取窗口控件的状态(包括是否可见、是否激活、最大化、最小化等):
WinGetSate("窗口标题"[,"窗口文本"]) ;用于窗口
ControlCommand("窗口标题","窗口文本",控件ID,选项) ;用于控件

检查窗口是否存在
WinExists("窗口标题"[,”窗口文本”])

5.2 验证窗口、控件文本常用的方法

1
2
3
4
5
6
7
8
获取窗口的完整标题名:
WinGetTitle("窗口标题"[,"窗口文本"])

获取窗口中的文本:
WinGetText("窗口标题"[,"窗口文本"])

获取控件上的文本:
ControlGetText("窗口标题","窗口文本",控件ID)

5.3 验证图片或显示效果的常用的方法

AutoIt没有提供图像比较函数,须要自己开发相应的函数。如果不准备开发这方面的功能,就只有将要检查的图像或效果用截屏的方法保存下来,并附在测试报告中,让测试人员事后人工分析。

截取整个屏幕或指定区域:

1
2
3
4
5
_ScreenCapture_Capture("C:\Image1.jpg")

_ScreenCapture_Capture("C:\Image1.jpg",0,0,796,596)

_ScreenCapture_CaptureWnd("C:\Image1.jpg",窗口句柄)
事例:

1
2
3
4
#include <ScreenCapture.au3>
;用来保存图像的路径和文件名
$file="c:\ScreenCapture"&@MON & @MDAY & @HOUR & @MIN & @SEC&" .jpg"
_ScreenCapture_Capture($file);并保存到文件中

5.4 验证文件常用的方法

1
2
3
4
5
6
7
8
检查文件是否存在:
FileExists("路径")

获取文件大小:
FileGetSize("路径")

获取文件基本属性(包括只读,隐藏等):
FileGetAttrib("路径")

5.5 其他验证

1
2
3
4
5
返回当前鼠标指针形状的ID:
MouseGetCursor()

获取当前鼠标的坐标位置:
MouseGetPos([dimension])

6. 实例

下面这个脚本实例演示了如何打开计算器、找到计算器窗口、操作计算器完成“1+2”的计算和验证,并将检查的结果写入测试报告中。

脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Run("calc.exe")
WinWaitActive("计算器")
ControlClick("计算器","","1")
ControlClick("计算器","","+")
ControlClick("计算器","","2")
ControlClick("计算器","","=")

$Result=ControlGetText("计算器","",403)
if $Result=="3. " Then
FileWriteLine("C:\result.txt","正确:和期望结果3一致")
Else
FileWriteLine("C:\result.txt","错误:和期望结果3不一致,实际结果结果为"&$Result)
EndIf
WinClose("计算器")

⑸ 【工具】获取窗口与控件信息

常言道,工欲善其事,谈尘脊必先利其器。在脚本中常见的一种操作是操作窗口或控件,在操作之前,首先必须获取目标的各种信息,这时就要用上辅助工具了。本文会介绍一些获取窗口、控件信息的常用工具,这里的先后顺序是随意安排。如果目前用的没什么问题就继续用着,如果对某些地方不满意则可试试其他。
简单的截图不容易全面反映整个工具兄丛的功能和特色,使用才能获得真实体验。

评论:这个最初来自于 AutoIt3 且安装包中自带的工具,就无需过多介绍了。功能简陋,但无需获取且使用还算方便(从托盘或主窗口菜单访问),没有特殊要求的情况下也基本够了。下面介绍的工具一般都包含了这个工具的功能。
这是这里唯一一个在单个截图含渗中包含所有功能且打开之后没有额外操作的工具。

评论:这个工具我曾用过较长时间,不过现在看似乎比较中庸。

⑹ 按键,自动识别单个数字,并输入,怎么做这个脚本,颜色一样。新手求教

一、如果可以读取到出现数字的控件,直接读取,输入。
二、如果不能读取,用OCR的方法来识别图片为数字,输入。
OCR的方法:
1,可以使用插件。。。。
2,可以制作识别脚本。
祝你顺利!

⑺ 分析一下autojs的坐标、控件、找图、找色

1~坐标点击就是直接点击某个点,这个点是固定的,所以在不同分辨率兼容性差,所以不推荐使用,不详说,主要说说其他几个

2~控件点击是autojs左右特点的一项功能,它是基于安卓的无障碍功能的,在软件上有很好的支持,但是游戏就不行了。具体的教程很多,不多说了,就说说我在使用时踩得一些坑。

①有些控件能用autojs的工具找到,但是写出来后却识别不出来,手动滑动一下屏幕就能找到了,不知道是不是BUG,所以加个判断,防止找不到脚本出错

②寻找控件建议不要用findOne()、waitFor()、exists()等一些会阻塞的方法,不然稍微出现一点其他事件就会阻塞,导致脚本莫名其妙的卡死,使用findOne(timeout)、findonce()时可以加个判断在不为null的时候再点击或其他操作,因为没找到返回null,直接click就会报错,脚本停止运行,要是是找的父或者子控件也写到判断里

③找图找色特别消耗内存,所以在能用控件就用控件,找图找色在找到后要用recycle()来对创建的图像对象回收,提高脚本稳定,让脚本能持续运行更长时间,截图也需要一定的时间

④如果脚本有悬浮窗,使用找图要注意不要将要找的图遮挡

⑤控件中使用text比id要靠谱一些,在一些软件中id是会改变的

ps:如果有问题可以在评论区评论,会的我会解答,不定时更新,可以点点关注和小心心哦

⑻ 在自动化测试中控件不能识别怎么办

1、如果是因为自动化测试工具的限制,比如对于WinForm的控件,有些自动化工具就不能识别,碰到这种情况,最好是看这个工具有没有扩展可以用,比如 Silktest的。Net Framework扩展。如果不行,那只能换自动化测试工具了。所以这个凸显出在做自动化测试以前,选择自动锋迹睁化测试工具的重要性。
2、如果是因为控件比较复杂,自动化工具可以识别,但是无法操作。这时我们可以通过Window API以及消息的方式来做,比如自己去调Window API来操作窗口,或者请开发实现一下消息的接口来给自动化工具调用等银岁
3、跟开发沟通,让他们的控件支持IAccessible接口,然后我们通过MSAA来操作(如果是WPF控件,则需要实现UIAutomation定义的一些接口)。不过一州态般情况下,除了微软这样对软件的Accessible要求很高的公司,其它公司很少会花费时间来实现这个接口……。 另外扯一句,产品的Accessible的程度,实质上决定了一个公司能对产品做自动化测试的程度。
4、如果以上方法都不行,那只有最后一个双刃剑可以用了,就是鼠标键盘模拟。理论上来说,只要用户可以操作的东西,只要有界面,就可以通过鼠标键盘模拟来实现(君不见N多游戏外挂的键盘鼠标模拟大法)。就如双刃剑一样,这种做法是杀敌一千,自损八百。因为鼠标键盘模拟非常依赖于当前激活的窗口以及光标位置和焦点位置,而且同步起来很困难。这也造成了后期维护成本很高。

⑼ 开发安卓用什么工具

1、AndroidStudio

AndroidStudio是是基于IntelliJIDEA的谷歌开发Android应用开发集成开发环境(IDE)。有IntelliJ的代码编辑器和开发者工具。AndroidStudio拥有很多可以提升安卓app开发效率的功能。

2、EclipseEclipse是程序员普遍使用的app开发工具,作为一个跨平台的开发平台,支持众多插件,对比其他的固定的IDE软件,具有非常高的自主性、灵活度,让大家的安卓app开发更加高效。

3、是一个Android代码语法高亮控件,并且还支持lua扩展,同时,还可以自定义语言配置。

4、AppInventor

AppInventor也是谷歌出品的一款安卓app开发制作工具,使用起来更加简单、易上手。5、AppPark(应用公园)

应用公园是国内领姿段先的app制作平台,和上面的安卓应用开发软件不同,应用公迹枯誉园可以让普通人也能自己制作出专业的app软件。

传统的app开发工具是让程序员逐步敲代码完成各个app功能模块的开发,而且应用公园平台为大家提供了上百种开发的app通用功能模块,用户不用再重新开发,直接选择需要的功能模块,按照自己的app规划,自由组合,然后上败伏传图文内容,就能快速制作app。

5大安卓应用开发软件盘点,普通人也能开发app了

而且应用公园平台还为大家提供了上百套开发好的app模板,可以直接使用,包括外卖配送、电商商城、新闻资讯、企业品牌、社交论坛等等。

利用应用公园自己制作app,几天时间就能搞定,不需要专业的技术人员参与,普通人自己制作app,成本能节省90%以上。

⑽ 如何查看android studio 中的控件

可以通过将 WebBrowser (WebView)控件托管在应用程序中并使用其 Source 属性或 Navigate(Uri) 方法更改该控件的位置来实现该操作。 警告: 默认情况下,脚本在 WebBrowser 控件中处于禁用状态。如果您想在控件中启用脚本,请将 IsScriptEnabled 属性设置为 true。 以下代码示例显示如何从 ", UriKind", UriKind.Absolute); 或者,也可以使用 WebBrowser(WebView)类的 Navigate(Uri) 方法来实现该目标: Wp8: webBrowser1.Navigate(new Uri("", UriKind.Absolute)); Win8: webView.Navigate(new Uri("", UriKind.Absolute)); 如果您选择调用方法而不是设置属性,那么请记住,如果WebBrowser控件尚不在可视化树中,则会引发 InvalidOperationException。为了避免这个问题,您可以向 Loaded 事件附加一个处理程序,以确保在调用该方法之前此控件位于可视化树中。 .Loaded += (object sender, RoutedEventArgs e) => { webBrowser1.Navigate(new Uri("", UriKind.Absolute)); };webView1.Loaded += (object sender, RoutedEventArgs e) => { webView1.Navigate(new Uri("", UriKind.Absolute)); }; 2. 显示静态 Web 内容 您可以使用 WebBrowser (WebView)控件在应用程序中显示已设置格式的静态内容。例如,开发人员可能希望在应用程序包中包含帮助文本,以便用户可以随时访问。或者,您也可以使用 WebBrowser (WebView)控件显示应用程序已使用 SaveToString() 方法保存到独立存储的静态 Web 内容。 向项目中添加静态内容 向项目中添加静态内容的步骤 1. 使用以下 HTML 代码创建一个名为 readme.htm 的 HTML 文件: Sample Readme Content 2. 在 Visual Studio 中打开一个新的或现有的解决方案。 3. 在“解决方案资源管理器”中,右键单击您项目的名称,单击“添加”,然后单击“现有项”。 4. 导航到 readme.htm 文件的位置,选择该文件,然后单击“添加”。 5. 在“解决方案资源浏览器”中,单击该文件的名称。确认“属性”窗口中的“生成操作”部分。 添加命名空间 在页面后台代码中添加以下资源以包含以下命名空间。例如,如果您对主页使用默认命名约定,则应更新 MainPage.xaml.cs。 using System.IO.IsolatedStorage; using System.IO; using System.Windows.Resources; 添加 WebBrowser(WebView)控件 可以使用工具添加 WebBrowser (WebView)控件,也可以手动添加 WebBrowser (WebView)控件。 使用工具添加 WebBrowser(WebView)控件 使用工具添加辩肆 WebBrowser (WebView)控件的步骤 1. 在 Visual Studio 中打开一个新的或现有的解决方案。 2. 查看项目的 XAML 文件时,单击“工具箱”,将 WebBrowser (WebView)控件拖动到设备的图像中。 手动添加 WebBrowser(WebView)控件 在 XAML 中创建 WebBrowser (WebView)控件的步骤 1. 打开将在其中添加 WebBrowser (WebView)控件的页面的 XAML 文件。在“解决方案资源浏览器”中,右键单击该页面耐搭的 .xaml 文件(默认情况下,新应用程携亩轿序的主页名为“MainPage.xaml”),然后选择“打开”。 2. 在 ContentGrid 中添加一个 WebBrowser (WebView)控件。例如: Wp8: Win8: 添加向独立存储中添加文件的代码 修改页面后台代码以包含以下两个函数,这两个函数将帮助向独立存储中添加静态文件。例如,如果您对主页使用默认命名约定,则应更新 MainPage.xaml.cs。 private void SaveFilesToIsoStore() { //These files must match what is included in the application package, //or BinaryStream.Dispose below will throw an exception. string[] files = { "readme.htm" }; IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication(); if (false == isoStore.FileExists(files[0])) { foreach (string f in files) { StreamResourceInfo sr = Application.GetResourceStream(new Uri(f, UriKind.Relative)); using (BinaryReader br = new BinaryReader(sr.Stream)) { byte[] data = br.ReadBytes((int)sr.Stream.Length); SaveToIsoStore(f, data); } } } } private void SaveToIsoStore(string fileName, byte[] data) { string strBaseDir = string.Empty; string delimStr = "/"; char[] delimiter = delimStr.ToCharArray(); string[] dirsPath = fileName.Split(delimiter); //Get the IsoStore. IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication(); //Re-create the directory structure. for (int i = 0; i < dirsPath.Length - 1; i++) { strBaseDir = System.IO.Path.Combine(strBaseDir, dirsPath[i]); isoStore.CreateDirectory(strBaseDir); } //Remove the existing file. if (isoStore.FileExists(fileName)) { isoStore.DeleteFile(fileName); } //Write the file. using (BinaryWriter bw = new BinaryWriter(isoStore.CreateFile(fileName))) { bw.Write(data); bw.Close(); } }