在自动化测试过程中会遇到如下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包(需要翻墙),用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/

autoitv3点击windows界面的更多相关文章

  1. 登录Windows界面前执行自定义脚本

    通常情况下,进入Windows界面之前都有一个登录过程,如何在登录前让系统执行脚本呢?下面介绍一种方法. 1.打开组策略,在Run(运行)中输入GREDIT.MSC,点击确认. 2.依次点击Compu ...

  2. W11更新,卡在正在准备Windows界面的解决办法

    昨天更新win11的时候,莫名其妙卡在了正在准备Windows界面. 为什么更新卡住了? 原因可能有很多: 更新文件大小可能很大,您的计算机可能会遇到问题. 机器停电或机器过热中断更新,这有可能导致一 ...

  3. Windows界面设计标准

    Windows界面设计标准..- Windows界面设计标准 Windows 界面设计标准 1. 易用性 界面元素的名称.标签应该易懂,用词准确,避免使用模楞两可的字眼,要与同一界面上的其他元素易于区 ...

  4. 终于解决了用JAVA写窗口程序在不同的windows界面下的显示保持一致。

    好像是两三年前的时候发现这个问题. 由于在windows经典界面与windows xp界面下,窗口的标题栏的高度是不一样的. 所以我们在用Java写GUI程序的时候,会遇到一个问题. 当我把一个JFr ...

  5. Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转到Android原生界面。

    当时业务的需求是这样的,H5有一个活动商品列表的界面,IOS和Android共用这一个界面,点击商品可以跳转到Android原生的商品详情界面并传递商品ID:  大概就是点击H5界面跳转到Androi ...

  6. WPF点击不同界面上的按钮实现界面切换

    原文:WPF点击不同界面上的按钮实现界面切换 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_29844879/article/details/ ...

  7. Windows界面编程第五篇 静态控件背景透明化(13篇)

    上一篇<Windows界面编程第三篇 异形窗体 普通版>和<Windows界面编程第四篇异形窗体 高富帅版>介绍了异形窗口(异形窗体)的创建,并总结出了异形窗口的“三要素”: ...

  8. windows界面程序设计,设置一个窗口始终在屏幕最前,SetWindowPos函数

    有时这种需求还是很必须的,比如现在做的一个登录验证系统,如果在windows登录界面点击到窗口外面,那窗口就会永远隐藏掉没法再启用了.这种情况必须设置该窗口一直在最前. 使用函数SetWindowPo ...

  9. 重复点击主界面(TabBar)按钮刷新界面--点击状态栏回到顶部

    1.监听按钮点击   2.判断是否是点击的同一个按钮(记录上次点击的按钮)   3.当重复点击相同按钮时,需要获取当前按钮对应控制器刷新界面      3.1 判断是否重复点击按钮,代码写在哪里?   ...

随机推荐

  1. centos虚拟机NAT静态IP设置

    宿主机为Centos6.3 64位,三台虚拟机为为Centos6.3 64位.虚拟机的网络连接方式为默认的NAT方式.虚拟机默认为DHCP方式动态获取IP.为了在三台虚拟机上搭建hadoop,需要将这 ...

  2. HDU4662+无

    把目标中的 U 转化为 I. 又因为 I的个数是有规律的:1 2 4 8 16 ...再结合可以取消 6 12 18 ...个I...得解 #include<string.h> #incl ...

  3. Spark的日志配置

    在測试spark计算时.将作业提交到yarn(模式–master yarn-cluster)上,想查看print到控制台这是imposible的.由于作业是提交到yarn的集群上,so 去yarn集群 ...

  4. Qt使用AES加密算法对字符串进行加密

          因工作需要,需要对字符串进行加密处理,在网上找了很长时间,终于找到了一个可以使用的aes加密算法.其源代码采用c++编写而成,但其头文件引用windows.h,经过修改部分代码,将#inc ...

  5. mybati的存储过程

    这里我就以的存储过程为例,大家一起学习一下,

  6. GCC下32位与64位机器类型变量所占字节数

    GCC下32位与64位机器类型变量所占字节数 在C语言中,编译器一般根据自身硬件针对类型变量来选择合适的字节大小,下面列举一下在GCC编译器下32位机器与64位机器各个类型变量所占字节数目: C语言 ...

  7. 关于html控件和服务器控件摁回车后提交按钮的问题

    今天做项目用到,项目是一个洗车系统,刷卡后在焦点出自动触发回车键事件,如,一个文本框,把焦点放入,刷一下卡,文本框自动获取卡号,同时触发回车事件,(就像银行办卡一样),发现刷卡后页面刷新后并没有执行按 ...

  8. Android --------- 利用SharedPreferences存取数据

    //向SharedPreferences中存放数据 //1.定义SharedPreferences对象,通过getSharedPreferences方法得到 SharedPreferences sp ...

  9. 微信app的分享功能

    最近在做微信app,需要用到分享功能,横观文档,压根没有提过分享功能自定义的事情……后来在搜索中找到一些前辈的文章,使用WeixinJSBridge这个接口实现,但是,我非常非常好奇,这是什么渠道透露 ...

  10. javascript学习教程之---如何从一个tab切换到banner幻灯片的转换

    一个简单的tab切换代码: <!doctype html> <html> <head> <meta charset="utf-8"> ...