我正在硒中进行测试,并且在页面加载时发生了很多事情。我发现了 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属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top