1.在autoit的安装目录下有个Au3Info.exe文件,该文件可以查看windows控件的信息,包括控件ID,类别名,高级模式,控件点击坐标等
用途是在操作控件函数的参数查询,如:ControlClick ( "标题", "文本", 控件ID [, 按钮 [, 点击次数 [, X坐标 [, Y坐标 ]]]] ),这里面就需要用到Au3Info.exe去查询
2.结合watir进行使用时需注意的地方
require 'win32ole'
require 'watir/windowhelper'
require 'watir'
@autoit = WIN32OLE.new("AutoItX3.Control")
@ie = Watir::IE.new
@ie.goto("D:\\test.html")
@ie.maximize()
@ie.file_field(:type,'file').click_no_wait
sleep(3)
@autoit.WinWaitActive("选择文件",'') PS: 运行到此处就没有反应, 有时间再整理。
@autoit.ControlClick("选择文件",'','ToolbarWindow322',50,180)
sleep(1)
@autoit.ControlClick("选择文件",'','Button3')
sleep(1s)
@ie.close
1)在@ie.file_field(:type,'file').click_no_wait这里用到了click_no_wait而没有用click,是因为click之后,就会被挡在那里,你后面的auto..根本就没有执行。
2)而在下面接着sleep(3)是很有必要的,因为click_no_wait执行速度很快,后面的autoit更快。如果不sleep,你窗口还没有弹出来前,autoit已经执行完了,所以才要加一个sleep。
3)ControlClick这个函数中,前三个参数是必需的,后面的参数是可选的,其中第三个参数即可以控件ID,也可以是类别名
4)如果文件运行之后报错:uninitialized constant Autoit (NameError)
这个是因为你安装的watir时,AutoItX3.dll没装好,需要手工注册下的,
先看下下面目录下文件是否存在,c:\ruby\lib\ruby\gems\1.8\gems\watir-1.6.2\lib\watir\AutoItX3.dll
存在的话,再在windows运行输入框中运行下面的命令进行手工注册,试下看:
regsvr32.exe c:\ruby\lib\ruby\gems\1.8\gems\watir-1.6.2\lib\watir\AutoItX3.dll
附加上test.html的代码
01 |
< html > |
02 |
< head > |
03 |
< title >watir处理对话框</ title > |
04 |
< script language = "javascript" type = "text/javascript" > |
05 |
function clickbutton(flag) |
06 |
{ |
07 |
if (flag == 1) alert("测试alter对话框"); |
08 |
if (flag == 2) prompt("测试prompt对话框"); |
09 |
if (flag == 3) confirm('测试confirm对话框', '测试confirm对话框?',"测试结果:"); |
10 |
} |
11 |
</ script > |
12 |
</ head > |
13 |
|
14 |
< body > |
15 |
< center > |
16 |
< H1 >watir处理对话框< H1 > |
17 |
< hr > |
18 |
|
19 |
< table border = "2" > |
20 |
< tr > |
21 |
< th bgcolor = "#aaaaaa" >测试内容</ th > |
22 |
< th bgcolor = "#aaaaaa" >操作</ th > |
23 |
</ tr > |
24 |
|
25 |
< tr > |
26 |
< td >文件上传</ td > |
27 |
< td >< input type = "file" name = "attach[]" /></ td > |
28 |
</ tr > |
29 |
|
30 |
< tr > |
31 |
< td >alter对话框</ td > |
32 |
< td > |
33 |
< input type = "button" name = "alterbutton" value = "测试alter对话框" onclick = "clickbutton(1);" /> |
34 |
</ td > |
35 |
</ tr > |
36 |
|
37 |
< tr > |
38 |
< td >prompt对话框</ td > |
39 |
< td > |
40 |
< input type = "button" name = "promptbutton" value = "测试prompt对话框" onclick = "clickbutton(2);" /> |
41 |
</ td > |
42 |
</ tr > |
43 |
|
44 |
< tr > |
45 |
< td >confirm对话框</ td > |
46 |
< td > |
47 |
< input type = "button" name = "confirmbutton" value = "测试confirm对话框" onclick = "clickbutton(3);" /> |
48 |
</ td > |
49 |
</ tr > |
50 |
|
51 |
</ table > |
52 |
</ center > |
53 |
</ body > |
54 |
</ html > |
转自: http://www.cnblogs.com/zhangfei/archive/2010/07/28/1787203.html