selenium学习系列--windows窗口处理扩展

selenium对windows的扩展处理不好,需要通过外部工具进行扩展

下面是通过使用autoit3编写的一个处理外部处理成功,实现如下:

1、先建一个dialog.ini文件,配置信息保存在该ini文件中,如下:

 

ExpandedBlockStart.gif dialog.ini
[Choosefile]
title=选择文件|Choose file

[Alter]
title=Microsoft Internet Explorer|Windows Internet Explorer

[Prompt]
title=Explorer 用户提示|Explorer User Prompt

[Security]
title=安全警告|Security Alert

[DownloadFile]
title=文件下载 - 安全警告|文件下载|File Download

[SaveasFile]
title=另存为

 

 

 2、从dialog.ini文件中读取配置信息,获取当前系统所有打开的窗口,逐个进行匹配处理,处理成功后自动退出

处理代码如下:

 

ExpandedBlockStart.gif dealDialog.au3
  1  # include <Array.au3>
  2  # include <Date.au3>
  3 
  4  Global $FilePath  =  @ScriptDir  &   " \dialog.ini "
  5 
  6  DealDialog()
  7 
  8  Func DealDialog()
  9      Local $dialog_type,$win_list_array,$title_list,$list,$title_array
 10      
 11      $dialog_type  =  GetDialogType()
 12 
 13      $win_list_array  =  GetWinList()
 14      
 15      ;_ArrayDisplay($win_list_array,  " $win_list_array " )
 16      
 17      For $j  =   1  to UBound($dialog_type) - 1
 18          
 19          For $i  =   1  to UBound($win_list_array) - 1
 20              $list  =  IniRead($FilePath,$dialog_type[$j],  " title " , "" )
 21              
 22              If ($list  <>   '' ) Then
 23                  $title_array  =  StringSplit($list ,  ' | ' 1 )
 24                  
 25                  If (_ArrayFindAll($title_array,$win_list_array[$i])  <>   - 1 ) Then 
 26                      WinActivate($win_list_array[$i], '' )
 27                      
 28                      Switch $dialog_type[$j]
 29                          Case  ' Alter '
 30                              ;处理Alter和Confirm对话框
 31                              $button_index  =  _ArrayFindAll(StringSplit(WinGetClassList($win_list_array[$i]),Chr( 10 ), 1 ), ' Button ' )
 32                              
 33                              $content  =   ControlGetText($win_list_array[$i], '' , ' Static2 ' )
 34                              SetClipBoard($content)
 35                              
 36                              Switch UBound($button_index)
 37                                  Case  1
 38                                      Send( ' {ENTER} ' )
 39                                  Case  2
 40                                      ControlClick($win_list_array[$i], '' , ' Button1 ' )
 41                              EndSwitch
 42                              
 43                              Exit
 44                          Case  ' Choosefile '
 45                              ControlSetText($win_list_array[$i], '' , ' Edit1 ' ,ClipGet())
 46                              ControlClick($win_list_array[$i], '' , ' Button2 ' )
 47                              Exit
 48                          Case  ' Prompt '
 49                              ControlSetText($win_list_array[$i], '' , ' Edit1 ' ,ClipGet())
 50                              ControlClick($win_list_array[$i], '' , ' Button1 ' )
 51                              Exit
 52                          Case  ' Security '
 53                              $content  =   ControlGetText($win_list_array[$i], '' , ' Static2 ' )
 54                              SetClipBoard($content)
 55                              ControlClick($win_list_array[$i], '' , ' Button1 ' )
 56                              Exit
 57                           Case  ' DownloadFile '
 58                              $save_win_title  =  StringSplit(IniRead($FilePath, ' SaveasFile ' " title " , "" ) ,  ' | ' 1 )
 59      
 60                              For $k  =   1  to UBound($save_win_title) - 1
 61                                  If(WinExists($save_win_title[$k])   <>   1 ) Then
 62                                      ;Send( ' !S ' )
 63                                      ControlClick($win_list_array[$i], '' , ' Button2 ' )
 64                                  EndIf
 65                              Next
 66                              
 67                              Exit
 68                           Case  ' SaveasFile '
 69                              ControlSetText($win_list_array[$i], '' , ' Edit1 ' ,ClipGet())
 70                              ControlClick($win_list_array[$i], '' , ' Button2 ' )
 71                              Exit
 72                      EndSwitch 
 73 
 74                  EndIf
 75              EndIf
 76          Next
 77      Next
 78  EndFunc 
 79 
 80  Func SetClipBoard($content)
 81      ClipPut($content)    
 82  EndFunc
 83 
 84  Func GetDialogType()
 85      $name  =  IniReadSectionNames($FilePath)
 86 
 87      If @error Then 
 88          Exit;
 89      Else
 90          Return $name
 91      EndIf
 92  EndFunc
 93 
 94  Func GetWinList()
 95      Dim $array[ 1 ]
 96      
 97      $win_list  =  WinList()
 98      
 99      For $i  =   1  to $win_list[0][0]
100        ; 只显示带有标题的可见窗口
101          If $win_list[$i][0]  <>   ""  AND IsVisible($win_list[$i][ 1 ]) Then
102              _ArrayAdd($array,$win_list[$i][0])
103          EndIf
104      Next
105    
106      Return $array
107  EndFunc
108      
109  Func IsVisible($handle)
110    If BitAnd( WinGetState($handle), 2  ) Then 
111      Return  1
112    Else
113      Return 0
114    EndIf
115 
116  EndFunc
117 

 

 

3、实例:

运行下面的html文件,操作弹出对话框窗口,运行上面的autoit3代码

 

ExpandedBlockStart.gif 实例
< html >
    
< head >
        
< title > 处理对话框 </ title >
        
        
< script  language = "javascript"  type ="text/javascript" >
            
function  clickbutton(flag)
            {
                
if  (flag  ==   1 ) alert( " 测试alter对话框 " );
                
if  (flag  ==   2 ) prompt( " 测试prompt对话框 " );
                
if  (flag  ==   3 ) confirm( ' 测试confirm对话框 ' ' 测试confirm对话框? ' , " 测试结果: " ); 
            }
        
</ script >
    
</ head >
    
    
< body >
        
< center >
        
< H1 > watir处理对话框 < H1 >
        
< hr >
        
        
< table  border  ="2" >
            
< tr >
                
< th  bgcolor  = "#aaaaaa" > 测试内容 </ th >
                
< th  bgcolor  = "#aaaaaa" > 操作 </ th >
            
</ tr >
        
            
< tr >
                
< td > 文件上传 </ td >
                
< td >< input  type ="file"  name ="file_field"   /></ td >
            
</ tr >
            
            
< tr >
                
< td > alter对话框 </ td >
                
< td >  
                    
< input  type ="button"  name ="alterbutton"  value ="测试alter对话框"   onclick  = "clickbutton(1);"   />
                
</ td >
            
</ tr >
            
            
< tr >
                
< td > prompt对话框 </ td >
                
< td >  
                    
< input  type ="button"  name ="promptbutton"  value ="测试prompt对话框"   onclick  = "clickbutton(2);"   />
                
</ td >
            
</ tr >
            
            
< tr >
                
< td > confirm对话框  </ td >
                
< td >  
                    
< input  type ="button"  name ="confirmbutton"  value ="测试confirm对话框"   onclick  = "clickbutton(3);"   />
                
</ td >
            
</ tr >
            
            
< class ="jqTransformCheckbox jqTransformChecked"  href =" http://staging.healthcompare.com/Health-Insurance-Quote/Individual-Quote.aspx#"  jQuery1256697289107 ="13" />
            
</ table >
        
</ center >
    
</ body >
</ html >

 

 

转载于:https://www.cnblogs.com/sky_online/archive/2010/07/22/1783202.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值