用autoit识别windows窗口(保存弹窗及登陆(basic认证)相关的弹窗)-----

须知1:basic认证是代码里写的,弹出框是浏览器自带的(一般IE中自带的弹框一般是windows弹窗)

须知2:当保存某个文件、图片等(下载时,保存某个东西时)会有一个保存的弹窗(一般是windows弹窗)

基本大步骤:使用autoit,捕捉到控件后,编写au3脚本,生成exe,然后java调用exe

1、安装步骤:

 1>解压autoit3压缩包

2>点击进入Scite文件中

3>双击SciTE.exe

4>点击运行即可进入到Scite工作界面中

2、使用说明

1>进入到进入到Scite工作界面中后,把固定的源码粘贴上去

固定代码格式如下:

A、处理保存弹窗的源码

ControlFocus("保存图片", "","Edit1")

;ControlFocus("title","text",controlID) Edit1=Edit instance 1

;Dim $name = _Date_Time_GetLocalTime()

WinWait("[CLASS:#32770]","",10)

ControlSetText("保存图片", "", "Edit1", "C:\auto1.png")

Sleep(2000)

ControlClick("保存图片", "","Button1");

B、处理登陆相关的弹窗源码

Dim $account = "gmsdtech"

Dim $pwd = "111111"

Dim $dialogTitle = "Windows 安全"

WinActivate($dialogTitle)

WinWaitActive($dialogTitle)

Sleep(1*100)

ControlSetText($dialogTitle,"","Edit1",$account)

Sleep(1*100)

ControlSetText($dialogTitle,"","Edit2",$pwd )

ControlClick($dialogTitle,"","Button2")

Sleep(1*100)

 

2> 保存Scite工作界面中的脚本源码(把以上的脚本编码保存到一个地方之后才可以运行脚本源码),保存的文件的格式是.au3格式。

3>打开系统弹窗(或者登陆时弹出的系统弹出,例如交易后台登陆)然后运行脚本,看是否可以运行成功

4>当系统弹窗无法应时,则修改以上的脚本编码,具体修改方法如下(以保存弹出 为例)

  4.1>打开如下工具

   

                               图一:

                                  图二:点击运行

   4.2>单击点击如下查询工具,鼠标不要放开,然后去弹窗中找对应的元素然后更脚本编码

  4.3>通过找到的元素来更改编码

A、处理保存弹窗的源码

ControlFocus("保存图片", "","Edit1")

;ControlFocus("title","text",controlID) Edit1=Edit instance 1

;Dim $name = _Date_Time_GetLocalTime()

WinWait("[CLASS:#32770]","",10)

 

ControlSetText("保存图片", "", "Edit1", "C:\auto1.png")

Sleep(2000)

ControlClick("保存图片", "","Button1");

   图一:获取弹出最外层然后更改参数

    图二:获取输入框然后更改参数

 

  图三:获取保存按钮然后更改参数

5>运行调整好的脚本编码,看是否可以调通,如果可以调通则把该脚本转换成.exe格式(以上步骤保存的时候格式是.au3格式)

   5.1>用解压autoit3压缩包中的一个文件进行转换

   

   5.2>双击并运行一下.exe文件

   

    5.3> 选择以上保存的.au3格式的文件,为新转换的exe文件选择一个路径然后执行转换 (如下图)

     

 6>用Java程序调用以上exe文件(代码如下)

package com.gmsd.gommon;

import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.io.filefilter.TrueFileFilter;
import jdk.nashorn.internal.codegen.RuntimeCallSite;
public static void safeDialog(){
    Runtime time=Runtime.getRuntime();
    Process p=null;
    try {
        p=time.exec("\"D:/workspace/test.exe\"");
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println("exeER");
    }
}

 

posted on 2015-11-04 18:27  小果子  阅读(1190)  评论(0编辑  收藏  举报