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

原创 2012年05月25日 10:36:28

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

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

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

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

Dim $account = $CmdLine[1]
Dim $password = $CmdLine[2]
Dim $dialogTitle = "Windows Security"
WinActivate($dialogTitle)
WinWaitActive($dialogTitle)
Sleep(1*1000)
ControlSetText($dialogTitle,"","Edit1",$account)
Sleep(1*1000)
ControlSetText($dialogTitle,"","Edit2",$password)
ControlClick($dialogTitle,"","Button2")
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,并传入对应帐户和密码。

public String dealSecurityDialog(String admin,String password){
		String return_str = "true";
		if(admin == null || admin.equals("")){
			logger.error("admin is empty");
			return_str = "false";
		}else if(password == null || admin.equals("")){
			logger.error("password is empty");
			return_str = "false";
		}else{
			Environment env = Environment.getInstance();
			String safxDir = env.getSafxDir();
			String dealSecurityDialogExe = safxDir + "/utils/dealSecurityDialog.exe " + admin + " " + password;;
			
			
			dealSecurityDialogExe = dealSecurityDialogExe.replace("/", "\\");
			Runtime rt = Runtime.getRuntime();
			Process p;
	        try {
	            p = rt.exec(dealSecurityDialogExe);
	            BufferedInputStream in = new BufferedInputStream(p.getInputStream());
	            BufferedReader br = new BufferedReader(new InputStreamReader(in));
	            String s;
	            while ((s = br.readLine()) != null){
	            	logger.info(s);
	            }
	        } catch (IOException e) {
	           logger.error(e.getMessage());
	        }
		}
		return return_str;
	}

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

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

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


 

【Selenium10】处理对话框

页面上弹出的对话框若是基于iframe,需要进行switch_to_frame操作,若是div形式,则处理更简单 操作有:打开对话框、关闭对话框、操作对话框中的元素 用到的html ...
  • yzl11
  • yzl11
  • 2016年10月25日 23:20
  • 1450

selenium之 辨识alert、window以及操作

很多人分辨不出什么是alert、什么是window,今天讨论下怎么辨识alert和window,以及页面元素如div伪装的对话框。1.分辨首先区别下alert、window和伪装对话框: alert,...
  • huilan_same
  • huilan_same
  • 2016年08月24日 11:01
  • 6859

selenium webdriver学习(七)------------如何处理alert、confirm、prompt对话框

alert、confirm、prompt这样的js对话框在selenium1.X时代也是难啃的骨头,常常要用autoit来帮助处理。 试用了一下selenium webdriver中处理这些对话...
  • gzh0222
  • gzh0222
  • 2012年05月15日 14:32
  • 13348

selenium2 python自动化测试之利用AutoIt工具实现本地文件上传

本人在学习基于python语言的selenium2自动测试方法的过程中,发现涉及本地上传文件的测试时,selenium2在定位本地window窗口的对象(元素)上能力有限。当上传按钮使用的是input...
  • fish9164
  • fish9164
  • 2016年10月13日 16:20
  • 1394

selenium借用AutoIt 实现上传文件

1、AutoIT介绍      AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘、鼠标、窗口等操作,实现自动化。 2、实现原理      利用AutoIT编写合适的脚本,然后...
  • Lily_XL
  • Lily_XL
  • 2016年06月20日 21:16
  • 2448

selenium中处理windows的windows security dialog,安全验证

最近在做一个测试,需要登陆后台后才能对后面的进行
  • lan0227
  • lan0227
  • 2014年07月02日 10:46
  • 1079

selenium借助autoit操作上传下载对话框

虫师有一篇文章写的不错,链接如下:http://www.cnblogs.com/fnng/p/4188162.html 他的文章把upload.exe需要上传的文件写死了,下面的内容作为补充...
  • onlyanyz
  • onlyanyz
  • 2015年06月10日 22:14
  • 1678

Java+Selenium3方法篇38-AutoIt工具处理文件上传

关于文件上传,这边介绍一个第三方工具,叫AutoIt,简单来说,这个是一个能支持桌面GUI自动化的工具,它支持脚本语言编写。这里,我们用AutoIt来做文件上传的演示。在Selenium脚本中如果需要...
  • u011541946
  • u011541946
  • 2017年07月04日 23:27
  • 1019

Windows安全描述符SECURITY_DESCRIPTOR阅读注释

安全对象Securable Object是拥有SD的Windows的对象。 所有的被命名的Windows的对象都是安全对象。一些没有命名的对象是安全对象,如:进程和线程,也有安全描述符SD。安全对象S...
  • u012786754
  • u012786754
  • 2014年12月06日 12:10
  • 1048

Windows安全描述符SECURITY_DESCRIPTOR

安全对象Securable Object是拥有SD的Windows的对象。所有的被命名的Windows的对象都是安全对象。一些没有命名的对象是安全对象,如:进程和线程,也有安全描述符SD。安全对象Se...
  • luckylion
  • luckylion
  • 2011年06月03日 10:51
  • 1884
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Selenium 处理安全对话框 (windows security dialog)用autoit 来代替
举报原因:
原因补充:

(最多只允许输入30个字)