如何使用 Autoit 关闭所有可能出现的 javascript 警报和确认?
-
19-09-2019 - |
题
我正在硒中进行测试,并且在页面加载时发生了很多事情。我发现了 autoit,我认为它可以处理所有 javascript 对话框问题。我在网上搜索一些可以处理这个问题的自动脚本......
其他选择也会有帮助!
我不一定需要所有代码,但正确方向的某些点会有所帮助。
解决方案
好吧,这个解决方案对我有用......我可以在这里关闭 2 个窗口。另外,我将能够根据弹出窗口的名称来处理弹出窗口,这很酷。我启动脚本后它总是在后台运行。当我希望它结束时,我只需从任务管理器或右侧任务栏区域关闭自动程序即可。
While True
If WinWait('Name of your Popup', '', 1) == 1 Then
;Wait for page to load if found
Sleep(10000)
;Close Page
Send('!{F4}')
Sleep(5000)
;Confirm Dialog
Send('{ENTER}')
Sleep(1000)
;Close Lanucher Page
Send('!{F4}')
Sleep(5000)
;Confirm Dialog
Send('{ENTER}')
EndIf
;Let another thread have a turn
sleep(3)
WEnd
这也可以直接在 python 中实现,详细信息: http://www.parrisstudios.com/?p=308, ,但你仍然需要 autoit3。
其他提示
如果您遇到警报框问题,您可能需要以编程方式禁用它们,或者在代码中创建一个单独的模式,根据条件(即,调试模式)。
宏录制程序的工作效果并不像您想象的那么好。通常,宏记录程序会记录鼠标单击的位置和按键的时间。更好的宏记录程序使用(通常是图像处理)和(很少)计算机视觉技术。使用这些技术的解决方案通常非常昂贵。(每个座位5k-10k)【我不记得其中一个更好的版本的名字了 可能是快速测试, ,但它是由一家被惠普收购的公司制造的]
我试图用AutoIt的和愚蠢的JavaScript警告网页交互保持打破一切,我终于想通了如何禁用它们,所以我想我会在这里发布:
#include <ie.au3>
$oIE = _IEAttach('https://www.site.com','URL')
$EventObject=ObjEvent($oIE.document,"IEEvent_")
Func IEEvent_onreadystatechange()
$readystate=$oIE.document.readystate
ConsoleWrite ($readystate & @CRLF )
if $readystate='interactive' then killalert()
EndFunc
while 1
sleep(100)
WEnd
func killalert()
Local $o_head = $oIE.document.all.tags("HEAD").Item(0)
Local $o_script = $oIE.document.createElement("script")
With $o_script
.language = "jscript"
.type = "text/javascript"
.text = 'function alert(message) {};'
EndWith
$o_head.appendChild($o_script)
EndFunc
基本上这样做是有一个函数被调用中的AutoIt当页面就绪状态=“互动”(显然这是大多数网页的加载后却“跑”什么,我认为之前),其插入一些JavaScript成页面重新定义警报()函数,以便它什么都不做(没有警告对话框担心有点击OK)。我已经测试这一点,它的工作原理。
如果你有警报()函数从页内的帧被称为那么你将不得不使用onreadystatechange事件和框架,而不是在主文档的readystate属性。