autoitv3点击windows界面

在自动化测试过程中会遇到如下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/

转载于:https://www.cnblogs.com/testway/p/6033529.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java ftp上传文件_jaVA使用FTP上传下载文件的问题

为了实现 FTP上传下载,大概试了两个方法sun.net.ftp.FtpClientorg.apache.commons.net一开始使用sun.net.ftp.FtpClient,结果发现唯一的问题是它不可以创建目录,随后试了下org.apache.commons.net,创建目录倒是没有问题,不过用FTPClient 的storeFile方法存储文件的时候发现文本…

【转载】linux环境下tcpdump源代码分析

linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02 CSDN博客原文链接 http://blog.csdn.net/han_dawei/article/details/12615199主题 Tcpdump 源码分析作者:韩大卫 吉林师范大学tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解&a…

java 扩展接口_详解常用的Spring Bean扩展接口

前言Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心。Spring框架运用了非常多的设计模式,从整体上看,它的设计严格遵循了OCP----开闭原则,即:1、保…

会话控制(session、cookie)

1.session(1)session存储在服务器的(2)session每个人存一份(3)session有默认的过期时间(4)session里面可以存储任意类型的数据安全,对服务造成压力用法:1.当一个页面需要使用session的时候,需要在页面顶部加session_start();2.操作session 赋…

java 批量提交_【INSERT】逐行提交、批量提交及极限提速方法

在Oracle数据库中,不是提交越频繁越好。恰恰相反,批量提交可以得到更好的性能。这篇文章给大家简单展示一下在Oracle数据库中逐行提交于批量提交两者之间的性能差别。最后再给出一种可以极大改变性能的方法。1.创建表t_ref,并初始化880992条数…

自动化测试索引

转自:http://www.cnblogs.com/zhangfei/p/5454682.html 自动化测试全聚合 UI自动化测试:1.基础API:http://www.cnblogs.com/zhangfei/p/3158223.html2.数据驱动:http://www.cnblogs.com/zhangfei/p/5390091.htmlhttp://www.cnblog…

java中p.name_spring如何使用命名空间p简化bean的配置

这篇文章主要介绍了spring如何使用命名空间p简化bean的配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下一般情况下,我们是这么配置bean的:说明:cars是公用的集合Bean&…

Codeforces Round #148 (Div. 2)

A. Two Bags of Potatoes 枚举倍数。B. Easy Tape Programming (待补)C. Not Wool Sequences 考虑前缀异或和。\[answer \prod_{i1}^{n}{2^m-i}\]D. Boring Partition \(a_i\)从小到大排序,以某个\(i\)为分界点,考虑各种情况的最…

c盘java文件误删_C盘爆满怎么办,教你有选择性删除文件,恢复空间

有很多朋友说电脑c盘有很多垃圾,占着空间,还导致电脑响应变慢。还不知道能不能删除,很困扰。那么c盘文件都是什么文件呢?哪些能删除,做一次全面的清理呢?下面给大家介绍一下program Date:系统文…

SSAS parent/child dimension

ex: EmployeeKey ParentEmployeeKey FullName . 给层级命名: ParentEmployeeKey-->Properties--> NameTemplate 定义层级名称 . Browse中如果想看到FullName,EmployeeKey-->Properties-->NameColumn: FullName . 上层member不显示在下一层&…

java向另一activity输入_Activity经典实例一:两个Activity传递数据和对象

1、概述:Activity类直接或者间接地继承了Context、ContextWrapper、ContextThemeWrapper等基类,因此Activity可以直接调用它们的方法。创建一个Activity需要实现某些方法,常见的是实现onCreate(Bundle status)方法,该方法将会在Ac…

团队随笔汇总

一、团队展示 二、团队选题报告 三、第二次团队作业——预则立&&他山之石 四、UML 五、团队项目——需求规格说明书 六、第四次团队作业——系统设计 七、体系结构设计MVC 八、【Alpha版本】冲刺随笔汇总 九、第六次团队作业——Alpha冲刺之事后诸葛亮 十、随堂软工团队…

echarts3 graph java_Echarts中graph类型的运用求教

以下是百度Echarts官网上关系图的源码,但是这个关系图的node节点和edge都是静态文件里规定好的,我现在想动态实现,点击其中一个节点A然后新产生一个新节点B,并且有A和B之间的edge,就类似于百度的人物关系图谱那种动态生…

Nginx系列1之部分模块详解

1 内核模块:名称: daemon语法: daemon on |off默认值: on功能: 决定nginx 在前台执行还是后台守护进程执行的名称: Env语法: env var | varvalue默认值: 没有功能: 该指令…

java创建线程哪种方法最好_Java创建线程的三种方法比较

一般有三种方法,Thread,Runnable,Callable.Runnable和Callable的区别(1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得(3)call方法可以抛出异常,run方法不可以(4)运…

深入理解JSON对象

深入理解JSON对象 前面的话 json(javascript object notation)全称是javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据。2001年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式。本…

java内存分配模型优点_高并发实战(二)-并发基础 缓存 MESI 内存模型

左图为高速缓存 右图为多级缓存数据的读取和存储都经过高速缓存,CPU核心与高速缓存有一条特殊的快速通道。主存与高速缓存都是连接在系统总线上,当然其他组件也是在此基础上进行通信的。在高速缓存出现后不久,系统变得愈加复杂,高…

CentOS 7 安装SVN服务端

CentOS7下安装SVN服务 1. yum命令即可方便的完成安装# sudo yum install subversion 测试安装是否成功:# svnserve --version 更改svn的默认配置(更改默认的指向目录和默认端口)# sudo vim /etc/sysconfig/svnserve编辑示例:OPTIONS"-r /data/svn -…

ionic简单路由及页面传参

1)页面跳转及传参方法 angular.module(app.routes, [])//routes路由模型.config(function($stateProvider, $urlRouterProvider) {$stateProvider.state(page1, {url: /page1,//路由地址templateUrl: templates/page1.html,//实际模型文件controller: page1Ctrl,//控…

java 图片组合 分解_切分和组合图片(二)

int rows 4; //初始化有小图片的数量int cols 4;int chunks rows * cols;int chunkWidth, chunkHeight;int type;//读取图片文件File[] imgFiles new File[chunks];for (int i 0; i < chunks; i) {imgFiles[i] new File("img" i ".jpg");}//缓存…