watir + autoit3

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的代码

view source print ?
01 <html>
02   <head>
03     <title>watir处理对话框</title>
04      <scriptlanguage="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         <tableborder="2">
20             <tr>
21                 <thbgcolor="#aaaaaa">测试内容</th>
22                 <thbgcolor="#aaaaaa">操作</th>
23             </tr>
24          
25             <tr>
26                 <td>文件上传</td>
27                 <td><inputtype="file"name="attach[]"/></td>
28             </tr>
29              
30             <tr>
31                 <td>alter对话框</td>
32                 <td>
33                     <inputtype="button"name="alterbutton"value="测试alter对话框" onclick="clickbutton(1);"/>
34                 </td>
35             </tr>
36              
37             <tr>
38                 <td>prompt对话框</td>
39                 <td>
40                     <inputtype="button"name="promptbutton"value="测试prompt对话框" onclick="clickbutton(2);"/>
41                 </td>
42             </tr>
43              
44             <tr>
45                 <td>confirm对话框</td>
46                 <td>
47                     <inputtype="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

你可能感兴趣的:(watir + autoit3)