1

我正在硒中进行测试,并且在页面加载时会发生很多事情。我发现了 autoit,我认为它可以处理所有 javascript 对话框问题。我在网上搜索一些可以处理这个的 autoit 脚本......

其他选项也会有所帮助!

我不一定需要所有代码,但在正确方向上的某些点会有所帮助。

4

3 回答 3

3

好的,所以这个解决方案对我有用......我可以在这里关闭 2 个窗口。此外,我将能够根据他们的名字处理弹出窗口,这很酷。在我启动脚本后,它总是在后台运行。当我希望它结束​​时,我只需从任务管理器或右侧的任务栏区域关闭 autoit。

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。

于 2009-11-10T20:20:13.223 回答
0

如果您遇到警报框问题,您可能希望以编程方式禁用它们或在您的代码中创建一个单独的模式,以根据条件(即调试模式)关闭它们。

宏录制程序并不像您想象的那么好。通常,宏录制程序会记录鼠标点击的位置和按键的时间。更好的宏记录程序使用(通常是图像处理)和(很少)计算机视觉技术。使用这些技术的解决方案通常非常昂贵。(每个座位 5k-10k)[我不记得更好版本的名称之一可能是 QuickTest,但它是由一家被惠普收购的公司制造的]

于 2009-11-10T18:24:27.327 回答
0

我试图用 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

基本上,它的作用是在页面就绪状态 ='interactive' 时在 autoit 中调用一个函数(显然这是在大部分页面加载之后但在它“运行”我认为的任何内容之前),它将一些 javascript 插入页面以重新定义 alert() 函数,使其不执行任何操作(无需担心必须单击确定的警告对话框)。我已经对此进行了测试,并且可以正常工作。

如果您从页面内的框架调用 alert() 函数,那么您将不得不使用框架的 onreadystatechange 事件和 readystate 属性而不是主文档。

于 2013-09-23T09:12:16.580 回答