本帖最后由 cashiba 于 2016-9-23 19:08 编辑
是IE弹出来的窗口么?
具体有哪些看看,标题应该差不多,直接关闭就好了。
1361739590 发表于 2016-9-23 14:31
不是IE,是第三方应用程序。在登陆使用过程中,会有不确定的各种弹出窗口,有的是错误提示,有的是运行状态提示,有的是即时说明...标题,文字都不一定相同。这些窗口一弹出来,不点确定或关闭就没法往下next。总之,要实现无人值守操作的关键是能够识别出是弹出窗口。
难点在于:
1、标题,文字都不一定相同
2、获取顶层窗口或当前激活窗口的方法好像也不靠谱。可能获取不到弹窗或者获取错误。
目前的思路是,分段关闭。比喻在A窗口(标题:AAA)出现后,直到B窗口(标题:BBB)出现,AB之间先后出现的的所有窗口都是弹窗,即只要标题不是AAA或BBB的都winClose。
下面这段代码只能关闭标题为like"提示"的弹窗,有局限,标题不是"提示"的可能会漏掉:$HwArr = WinList("提示")
If $HwArr[0][0]>0 Then
$HwPop=$HwArr[1][1]
ConsoleWrite($HwPop)
winActive($HwPop)
sleep(1000)
KeyPress("Enter", 1)
;将弹窗标题写入log文本
Else
;进入下一步
endif
下面这段代码是循环获取当前活动窗口的标题,如果不是目标窗口"BBB",则关闭,直到"BBB"窗口出现。也不理想。Local $ATitle=WinGetTitle("[active]")
local $AHnd=WinGetHandle("[active]")
While 1=1
If $ATitle<>"BBB" Then
Sleep(1000)
WinClose($AHnd)
Else
ExitLoop
EndIf
WEnd
或:
Local $ATitle=WinGetTitle("[active]")
local $AHnd=WinGetHandle("[active]")
Do
Sleep(1000)
WinClose($AHnd)
until $ATitle="BBB"
|