z761003 发表于 2013-6-20 09:02:00

ie操作的一个小错误,不知道如何避免

#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <GDIPlusEx.au3>
#include <String.au3>
#Include <Date.au3>
#include <Winhttp_GetRespond.au3>
#include <ie.au3>


Opt("WinTitleMatchMode", 2)
While 1
ToolTip(ControlGetText ("Windows Internet Explorer", "", 'Edit1'),5,5)
if StringInStr(ControlGetText ("Windows Internet Explorer", "", 'Edit1'),"http://t.qq.com/") Then
   $wb_url=ControlGetText ("Windows Internet Explorer", "", 'Edit1')
   ExitLoop
EndIf
Sleep(100)
WEnd

   Local $i,$aArray,$oSpans,$oSpan

                        $IE = _IECreateEmbedded ()
                        $sub2=GUICreate("wb",402, 386,5,5)
                        GUICtrlCreateObj($IE, 0, 0, 402,386)
                        ;GUISetState(@SW_hide)
                        GUISetState(@SW_show)
                                        _IENavigate ($IE, $wb_url)
                                                if IsObj($ie) Then                                          
                                                               $oSpans =_IETagNameGetCollection($IE, "U")
                                                               if IsObj($oSpans) Then
                                                                          For $oSpan In $oSpans
                                                                                  if IsObj($oSpan) Then       

                                                                                                   If StringInStr($oSpan.outerhtml, "首页") Then
                                                                                                               Sleep(3000)
                                                                                                               MsgBox(0,"2","")
                                                                                                               For $x=40 To 310 Step 40
                                                                                                                        ControlClick ("wb","","","left",1,$x,237)
                                                                                                               Next                                                                                  
                                                                                                               $oSpan.click
                                                                                                               Sleep(1000)
                                                                                                               $oText = _IEGetObjById ($ie, "msgTxt")
                                                                                                               _IEFormElementSetValue ($oText, "你好!")
                                                                                                               Sleep(2000)
                                                                                                                  $oSpans =_IETagNameGetCollection($IE, "INPUT")
                                                                                                               if IsObj($oSpans) Then
                                                                                                                          For $oSpan In $oSpans
                                                                                                                                  if IsObj($oSpan) Then       
                                                                                                                                                   If StringInStr($oSpan.title, "广播") Then
                                                                                                                                                        $oSpan.click
                                                                                                                                                   EndIf
                                                                                                                                  EndIf
                                                                                                                          Next
                                                                                                               EndIf
;ExitLoop 这里不加EXITLOOP让循环一直下去就会出错

                                                                                                   EndIf
                                                                                  EndIf
                                                                          Next
                                                                   EndIf
                                                                EndIf                  
While 1
Sleep(100)
WEnd为什么那个EXITLOOP不去掉的话,执行代码就会出现:
The requested action with this object has failed.:
If StringInStr($oSpan.outerhtml, "??") Then
If StringInStr($oSpan.outerhtml^ ERROR

这种错误提示呀?如何才能不加EXITLOOP,循环到结束也不会出错退出呢?

z761003 发表于 2013-6-20 09:04:13

不好意思,不知道这代码块如何整体向左移的快捷键是什么,弄得上面的代码排序乱七八糟,大家将就着看下吧{:face (382):}

z761003 发表于 2013-6-20 11:22:52

今天人好少哦,全都上班去了么{:face (319):}

zch11230 发表于 2013-6-20 12:12:24

天太热了 理解能力又差 没心情细看 如果不EXITLOOP就会出错 那说明是循环上写法有问题 如果是有时要出错 有时不出错很可能是 $obj.xxx上的问题 像IE这种最好还是 将$oHTTP.responsetext 换成 _IEBodyReadText好一点 前面种出错了脚本就报错了 后面种出错了只影响返回的结果 不影响脚本的运行 不知道为什么求高人解释。

sanmoking 发表于 2013-6-20 12:13:06

回复 2# z761003


    ctrl+t
页: [1]
查看完整版本: ie操作的一个小错误,不知道如何避免