找回密码
 加入
搜索
查看: 3250|回复: 1

[AU3基础] [已解决]controlclick总是无法点到控件,但是可以看到激活框已经去到了那个控件。

[复制链接]
发表于 2015-12-22 17:55:00 | 显示全部楼层 |阅读模式
本帖最后由 xing999999 于 2015-12-23 19:32 编辑

我发现controlclick经常无法正常点击,在一个安装程序来回测试中,10次可能有2,3次是激活框去到了那个按钮,但是没有点击。

经过了大量的测试,即使winwati里参数使用的是获取的窗口句柄,即使在运行controlclick前运行了If Not WinActivate($hwin) Then WinActivate($hwin)
WinWaitActive($hwin);这样的语句,也无法保证能正常点击目标按钮。

所以对于要做安装程序自动化的朋友,建议你们2点,其一能发送键盘快捷键尽量用键盘快捷键,我发现发送键盘快捷键实在是稳定多了。其二建议增加后面的点击数值,我一般都是5,而我在做FoxitReader_7.2.1_ZQ_GFCHS这个安装改程序的时候,其中的点击用到了10才测试10次10次全通过,见下面的命令。。。。
ControlClick($hwin,"自定义安装","[CLASS:TNewRadioButton; INSTANCE:1]","left",10)
[CLASS:TNewRadioButton; INSTANCE:1]其实可以用"Button1",开始总是测试不点击,所以才改成这样。

所以顺便想问下各位高手,有什么方法能让controlclick能正常的点击按钮。

另外附上刚编辑的极点五笔拼音输入法的安装代码,看各位高手有没有办法能缩短。之所以这么长,是因为安装程序换的窗口比较多,并且每个窗口没有窗口文本,我只能从控件文本来判断。
#Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
#AccAu3Wrapper_OutFile=setup10th.exe
#AccAu3Wrapper_Res_Language=2052
#AccAu3Wrapper_Res_requestedExecutionLevel=None
#EndRegion ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
Run ("setup10th.exe")
$tip = "为了保证自动安装的顺利完成,请不要乱动的键盘和鼠标。"
$tip &= @CRLF
$tip &= "极点五笔将安装在C盘。如果需要安装在其他盘,请在安装结束后,卸载,再手动安装。"
ToolTip($tip, @DesktopWidth / 2.5 - 15, @DesktopHeight - 40 - 60, "温馨提示:", 2)
Local $jd="极点五笔 十周年纪念版 安装";打开安装程序
Local $hwin=WinWait ($jd);获取首窗口句柄
If Not WinActivate($hwin) Then WinActivate($hwin)
WinWaitActive($hwin);如果没激活窗口则自动激活窗口
Send("!{I}");发送下一步
Local $timeout = 5 ;5s
Local $isFound = False
Local $begin = TimerInit()
Do
    If ControlGetText($jd, "", "Button2") == "安装(&I)" Then;对比窗口控件文本来判断下一个窗口是否出现。
        $isFound = True
        ExitLoop
    EndIf
    Sleep(100)
Until TimerDiff($begin) >= $timeout * 10;等待时间
If Not $isFound Then
        MsgBox(0,"出错了","自动安装出错,请选用手动安装")
    ;出错处理
EndIf
Send("!{I}");发送下一步
Do
    If ControlGetText($jd, "", "Button2") == "下一步(&N) >" Then;对比窗口控件文本来判断下一个窗口是否出现。
        $isFound = True
        ExitLoop
    EndIf
    Sleep(100)
Until TimerDiff($begin) >= $timeout * 10
If Not $isFound Then
        MsgBox(0,"出错了","自动安装出错,请选用手动安装")
EndIf
Send("!{n}");发送下一步
Do
    If ControlGetText($jd, "", "Button4") == "输入模式选择" Then
        $isFound = True
        ExitLoop
    EndIf
    Sleep(100)
Until TimerDiff($begin) >= $timeout * 10
If Not $isFound Then
        MsgBox(0,"出错了","自动安装出错,请选用手动安装")
EndIf
Send("!{n}");发送下一步
Do
    If ControlGetText($jd, "", "Button5") == "启用智能标点" Then
        $isFound = True
        ExitLoop
    EndIf
    Sleep(100)
Until TimerDiff($begin) >= $timeout * 10
If Not $isFound Then
        MsgBox(0,"出错了","自动安装出错,请选用手动安装")
EndIf
Send("!{L}")
$jd="提示"
$hwin=WinWait($jd)
If Not WinActivate($hwin) Then WinActivate($hwin)
WinWaitActive($hwin)
send("{ENTER}")
Exit
发表于 2016-2-3 22:12:08 | 显示全部楼层
怎么回复就是已解决状态啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-4 07:07 , Processed in 0.073609 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表