用Autoit 如何获取进程id

用Autoit 如何获取进程id,第1张

帮助文档中查一下 ProcessList 函数,

ProcessList ( ["name"] )

它返回一个数组,

若不带参数,返回当前所有正在运行的进程的名字和PID;

若带参数,则返回指定进程的名字和PID。

PID就是你要的进程id了。

1 识别窗口的方法

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

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验证

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

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

1

2

3

4

5

6

7

8

9

10

获取窗口控件的坐标位置和大小等:

WinGetPos("窗口标题"[,"窗口文本"]) ;用于窗口

ControlGetPos("窗口标题","窗口文本",控件ID) ;用于控件

获取窗口控件的状态(包括是否可见、是否激活、最大化、最小化等):

WinGetSate("窗口标题"[,"窗口文本"]) ;用于窗口

ControlCommand("窗口标题","窗口文本",控件ID,选项) ;用于控件

检查窗口是否存在

WinExists("窗口标题"[,”窗口文本”])

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

1

2

3

4

5

6

7

8

获取窗口的完整标题名:

WinGetTitle("窗口标题"[,"窗口文本"])

获取窗口中的文本:

WinGetText("窗口标题"[,"窗口文本"])

获取控件上的文本:

ControlGetText("窗口标题","窗口文本",控件ID)

53 验证或显示效果的常用的方法

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

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

1

2

3

4

5

_ScreenCapture_Capture("C:\Image1jpg")

_ScreenCapture_Capture("C:\Image1jpg",0,0,796,596)

_ScreenCapture_CaptureWnd("C:\Image1jpg",窗口句柄)

事例:

1

2

3

4

#include <ScreenCaptureau3>

;用来保存图像的路径和文件名

$file="c:\ScreenCapture"&@MON & @MDAY & @HOUR & @MIN & @SEC&" jpg"

_ScreenCapture_Capture($file);并保存到文件中

54 验证文件常用的方法

1

2

3

4

5

6

7

8

检查文件是否存在:

FileExists("路径")

获取文件大小:

FileGetSize("路径")

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

FileGetAttrib("路径")

55 其他验证

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("calcexe")

WinWaitActive("计算器")

ControlClick("计算器","","1")

ControlClick("计算器","","+")

ControlClick("计算器","","2")

ControlClick("计算器","","=")

$Result=ControlGetText("计算器","",403)

if $Result=="3 " Then

FileWriteLine("C:\resulttxt","正确:和期望结果3一致")

Else

FileWriteLine("C:\resulttxt","错误:和期望结果3不一致,实际结果结果为"&$Result)

EndIf

WinClose("计算器")

还好哈哈哈我来为你解答

你可以尝试使用pywinauto中的其他api来获取下拉框数据,比如说list_viewget_item,这个方法可以获取listview中的数据项。

你也可以尝试使用更专业的工具,比如pyautoit,它可以获取更多的控件信息,并且支持多种 *** 作,比如模拟按键事件,这可以用于更复杂的UI *** 作。

常言道,工欲善其事,必先利其器。在脚本中常见的一种 *** 作是 *** 作窗口或控件,在 *** 作之前,首先必须获取目标的各种信息,这时就要用上辅助工具了。本文会介绍一些获取窗口、控件信息的常用工具,这里的先后顺序是随意安排。如果目前用的没什么问题就继续用着,如果对某些地方不满意则可试试其他。

简单的截图不容易全面反映整个工具的功能和特色,使用才能获得真实体验。

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

这是这里唯一一个在单个截图中包含所有功能且打开之后没有额外 *** 作的工具。

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

workingdir在ahk里也有,只是格式不同,workingdir在ahk里是一个变量,就是当前的工作路径,默认是本程序(就是你自己编的这个)所在的路径。ahk可以用SetWorkingDir来设定本程序的工作路径,也就是说可以不一定是本程序所在目录。至于复制自身。。考虑filecopy吧

打开网页之后的结果值是什么意思?

Local $hDownload = InetGet(")

将网页下载到电脑桌面上保存为html5testhtml文件,并给出字节大小等信息。

若需要获取网页上的内容,可以再去解析本地html文件,这就是文件的处理了。

获取DOM对象的函数只有一个_IEDocGetObj,取值函数有_IEGetObjById和_IEGetObjByName。看你的,你可以用后一个函数_IEGetObjByName:

_IEGetObjByName ( ByRef $ie, "caseywnr")

但取到的值是空值,因为表表单没有数据,如果要写入数据,则要用

Local $oIE = _IE_Example("form")

_IEPropertySet($oIE, "caseywnr", "hello java")

_IEAction($oSubmit, "click")

_IELoadWait($oIE)

上面的“form”是网页表单的name属性名称。

以上就是关于用Autoit 如何获取进程id全部的内容,包括:用Autoit 如何获取进程id、如何使用AutoIT完成单机测试、pywinauto获取到的下拉框数据数据不是想要的数据,该怎么处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9334821.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存