Selenium 处理安全对话框 (windows security dialog)用autoit 来代替

Selenium 处理安全对话框 (windows security dialog)autoit 来代替

如下图这种系统弹出的验证窗口,selenium处理不了,所以我们可以借助外部工具来实现。

http://autoit-cn.googlecode.com/svn/trunk

Autoit小巧而且使用简单。上面是autoitSVN地址,用svn Checkout,查看AutoIt.chm 文档,就可以很容易上手。感谢autoit汉化组的同学们,做的仔细的翻译和工具整理,在编辑器提示参数都是中文的。

[plain]  view plain copy
  1. Dim $account = $CmdLine[1]  
  2. Dim $password = $CmdLine[2]  
  3. Dim $dialogTitle = "Windows Security"  
  4. WinActivate($dialogTitle)  
  5. WinWaitActive($dialogTitle)  
  6. Sleep(1*1000)  
  7. ControlSetText($dialogTitle,"","Edit1",$account)  
  8. Sleep(1*1000)  
  9. ControlSetText($dialogTitle,"","Edit2",$password)  
  10. ControlClick($dialogTitle,"","Button2")  
  11. Sleep(1*1000)  


 

上面一段实现跳过安全对话框的autoit脚本。

$CmdLine[1]CmdLine[2] 代表命令行的第一个参数和第二参数。

WinActivate($dialogTitle)激活标题为”WindowsSecurity” 窗口。

ControlSetText($dialogTitle,"","Edit1",$account)username 编辑框输入用户名

ControlSetText($dialogTitle,"","Edit2",$password)password编辑框输入密码

ControlClick($dialogTitle,"","Button2")点击ok按钮

 

将上面的autoit脚本编译为 dealSecurityDialog.exe 文件

下面写一段处理java 代码来调用dealSecurityDialog.exe,并传入对应帐户和密码。

[java]  view plain copy
  1. public String dealSecurityDialog(String admin,String password){  
  2.         String return_str = "true";  
  3.         if(admin == null || admin.equals("")){  
  4.             logger.error("admin is empty");  
  5.             return_str = "false";  
  6.         }else if(password == null || admin.equals("")){  
  7.             logger.error("password is empty");  
  8.             return_str = "false";  
  9.         }else{  
  10.             Environment env = Environment.getInstance();  
  11.             String safxDir = env.getSafxDir();  
  12.             String dealSecurityDialogExe = safxDir + "/utils/dealSecurityDialog.exe " + admin + " " + password;;  
  13.               
  14.               
  15.             dealSecurityDialogExe = dealSecurityDialogExe.replace("/""\\");  
  16.             Runtime rt = Runtime.getRuntime();  
  17.             Process p;  
  18.             try {  
  19.                 p = rt.exec(dealSecurityDialogExe);  
  20.                 BufferedInputStream in = new BufferedInputStream(p.getInputStream());  
  21.                 BufferedReader br = new BufferedReader(new InputStreamReader(in));  
  22.                 String s;  
  23.                 while ((s = br.readLine()) != null){  
  24.                     logger.info(s);  
  25.                 }  
  26.             } catch (IOException e) {  
  27.                logger.error(e.getMessage());  
  28.             }  
  29.         }  
  30.         return return_str;  
  31.     }  

下面这个字串,定义了dealSecurityDialog。Exe的目录,我方的目录在 utils文件下下。

StringdealSecurityDialogExe = safxDir + "/utils/dealSecurityDialog.exe"+ admin + " " + password;;

只要在相应的代码里调用dealSecurityDialog方法,就是可以实现跳过安全对话框的操作。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值