找回密码
 加入
搜索
查看: 4065|回复: 12

[IE类操作] _IEBodyReadText函数出错(已解决)

  [复制链接]
发表于 2011-2-5 00:14:49 | 显示全部楼层 |阅读模式
本帖最后由 papapa314 于 2011-2-7 22:54 编辑

我在循环语句中用_IEBodyReadText反复判断网页中的内容,但经过几次循环(次数不固定,可能还跟其他因素有关),脚本就自动退出,双击出错的地方显示的是IE.au3里的语句:
Return SetError($_IEStatus_Success, 0, $o_object.document.body.innerText)
不知这个是什么原因?该如何解决,谢谢各位!
发表于 2011-2-5 00:52:51 | 显示全部楼层
不知道是什么情况,把有问题的代码贴出来呀?
发表于 2011-2-5 01:00:13 | 显示全部楼层
应该是对象(不存在)出错($o_object.document.body)
循环超标
发表于 2011-2-5 01:04:03 | 显示全部楼层
去注册个错误处理函数(可以减低由脚本异常而退出的几率)

评分

参与人数 1金钱 +10 收起 理由
papapa314 + 10 谢谢

查看全部评分

 楼主| 发表于 2011-2-5 01:07:30 | 显示全部楼层
回复 3# _ddqs.


    谢谢!请问autoit里有限制循环的次数吗,为什么会出现循环超标呢?或者具体超标的次数有没有写在ie.au3里?
  还不知道如何注册个错误处理函数,能否给个例子?
发表于 2011-2-5 01:23:25 | 显示全部楼层
http://www.autoitx.com/forum.php ... amp;fromuid=7653769
;----------------------------/

;程序异常处理

Global $MyError = ObjEvent("AutoIt.Error", "_MyErrHandler") ;初始化错误处理程序

;

Func _MyErrHandler()

        ;Return

EndFunc   ;==>_MyErrHandler

;----------------------------/
#include <IE.au3>
_IEErrorHandlerRegister()
 楼主| 发表于 2011-2-5 01:24:30 | 显示全部楼层
本帖最后由 papapa314 于 2011-2-5 01:26 编辑

代码如下:
[code]For $i=0 To _GUICtrlListView_GetItemCount($listview1)-1
                 fun1()

        For $j=1 To 36       
            Sleep(4000)
       
            If StringInStr($oIE.document.body.innerText,"失败") Then
              ExitLoop
               
       
            ElseIf StringInStr($oIE.document.body.innerText,"标题") Then
                Sleep(1000)
                 fun2()

                 ExitLoop
       
       
            Else
               
              Sleep(1)
                      EndIf

             Next
        If Mod($j,36)=0 Then
           TrayTip("提示","超时",8)
        EndIf
Next
发表于 2011-2-5 01:34:04 | 显示全部楼层
如果你想了解更多出错信息,可以把下面函数加到脚本中,若不需要建个空函数也可!
译义供参考(或许不对书)
;------------------------------------/
Func _MyErrHandler()

        ;Return SetError(1, 0, "") ;返回不提示
        If Not @Compiled Then


                Local $Number = $MyError.number
                Local $HexNumber = Hex($Number, 8)
                ;echo("错误输出行号: " & @ScriptLineNumber & " 脚本出错行号: " & $MyError.scriptline & " 系统提示信息: " & StringStripWS($MyError.windescription, 2))
                ;#CS
                        ConsoleWrite(@CRLF & _
                        "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" & @CRLF & _
                        "┃              已捕捉到一个错误的接口信息!                   " & @CRLF & _
                        "┠━━━━━━━━━━━━━━━━━━━━━━━━━━━━┨" & @CRLF & _
                        "┃" & @CRLF & _
                        "┃----> 异常文件: " & @ScriptName & @CRLF & _
                        "┃----> 故障说明: " & StringStripWS($MyError.description, 2) & @CRLF & _
                        "┃----> 错误代码: " & "0x" & $HexNumber & "(" & $Number & ")" & @CRLF & _
                        "┃----> 模块错误: " & $MyError.lastdllerror & @CRLF & _ ;主程序所需的动态链接库返回的错误代码
                        "┃----> 脚本行号: " & $MyError.scriptline & @CRLF & _
                        "┃----> 错误来源: " & $MyError.source & @CRLF & _
                        "┃----> 帮助文件: " & $MyError.helpfile & @CRLF & _
                        "┃----> 帮助主题: " & $MyError.helpcontext & @CRLF & _
                        "┃----> 系统描述: " & StringStripWS($MyError.windescription, 2) & @CRLF & _
                        "┃" & @CRLF & _
                        "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" & @CRLF & _
                        @CRLF & _
                        "行号: " & @ScriptLineNumber _
                        )
                ;#CE
        EndIf

        Return SetError(1, 0, "") ; 检查后返回

EndFunc   ;==>_MyErrHandler
;----------------------------------------------------------/

评分

参与人数 1金钱 +10 收起 理由
papapa314 + 10 谢谢,辛苦了

查看全部评分

 楼主| 发表于 2011-2-5 01:35:06 | 显示全部楼层
回复 6# _ddqs.


    我看了一下,这个虽然注册了一个错误处理函数,可是能保证循环不再超标吗?这里为什么会出现循环超标,源码已贴出,能否请兄弟帮忙看看?再次感谢!
发表于 2011-2-5 01:46:40 | 显示全部楼层
对对象操作之前
先检测下
;防访问异常
If IsObj($obj) Then
        
        ;再操作。。。
        
EndIf
发表于 2011-2-5 02:08:26 | 显示全部楼层
循环貌似没问题
当操作对象时,是不是页面还没生成
先检测下
发表于 2011-2-5 02:14:47 | 显示全部楼层
如果是对IE 提示页(找不到某网站)操作
可能访问不了(
你试下
)
 楼主| 发表于 2011-2-7 22:54:02 | 显示全部楼层
本帖最后由 papapa314 于 2011-2-7 22:55 编辑

回复 12# _ddqs.

貌似是$oIE在网页网址改变的时候变量有时就不存在了,用_IEAttach重新定义$oIE,然后再进行操作,问题解决了,谢谢帮忙!
剩下的问题就是用了_IEAttach软件运行时会有警告,应该是_IEAttach函数本身的问题
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-12 10:20 , Processed in 0.093003 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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