在自动化测试过程中会遇到如下windows安全认证,需要输入账号和密码,这个认证对话框不属于element元素。无法用selenium操作,需要用autoitv3操作,输入账号密码后,再进行web元素操作。
有2中方式:
第一种:编写autoitv3脚本,生成autoitv3 可执行程序,再用java调用可执行程序
autoitv3下载地址
https://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe
使用这个编辑器编写一个脚本,再用脚本生成一个可执行exe文件,这样在需要输入账号和密码的时候,使用java调用可执行exe。就可以实现输入账号和密码的功能了
第二种:下载autoitx4java.jar包(需要FQ),用java程序调用jar包,实现输入输入和点击等操作,jar包下载地址:
https://code.google.com/archive/p/autoitx4java/downloads
同时也需要下载工具JACOB Java COM bridge:
http://sourceforge.net/projects/jacob-project/
JACOB 包包括3个文件:jacob.jar,jacob-1.18-x64.dll,jacob-1.18-x86.dll
也要下载安装https://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe
java包和dll文件放置位置
package auto.test; import java.io.File; import com.jacob.com.LibraryLoader; import autoitx4java.AutoItX; public class AutoITUtil {static File file = null;public AutoITUtil() {// TODO Auto-generated constructor stub }/*** 获取java虚拟机32位或64位* @return*/public static String getOSVersion(){return System.getProperty("sun.arch.data.model");}public static void setJacobDllFile(){String jacobDllVersion = null;if (getOSVersion().contains("32")){jacobDllVersion = "jacob-1.18-x86.dll";}else {jacobDllVersion = "jacob-1.18-x64.dll";}file = new File("lib", jacobDllVersion);System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());}
//处理window安全对话框 提供参数 tiltle 账号,密码public static void inputWinSecure(String title,String userName,String pwd) throws InterruptedException{setJacobDllFile();AutoItX x = new AutoItX();Thread.sleep(1000);x.ControlSetText(title,"","Edit1",userName);Thread.sleep(1000);x.ControlSetText(title,"","Edit2",pwd);Thread.sleep(1000);x.controlClick(title,"","Button2");} }
这个window安全对话框的处理,就通调用如下语句来处理:
AutoITUtil.inputWinSecure("Windows 安全", "root", "root");
参考:https://www.joecolantonio.com/2014/07/02/selenium-autoit-how-to-automate-non-browser-based-functionality/