yyabo 发表于 2009-3-24 16:46:31

只循环一次的怪问题

下面是对一个网页的冲浪代码
While 1
        ;获取名为“main”的frame
        $oFrame = _IEFrameGetObjByName($oIE, "main")
        $sText=_IEBodyReadText($oFrame)
        ;如果搜索到包含“k the”的字符串就进行如下操作
        if StringInStr($sText,"k the")>0 Then
                        ;拿frame内的文本与字符串组A比较,如果正确则点击字符串组A
                        for $r=0 to 32
                                If StringInStr($sText,$arrayA[$r])>0 Then
                                MsgBox(0,"link","应点图的src:"& $arrayA[$r],1)
                                _IEImgClick($oFrame,$arrayA[$r],"src")
                                ExitLoop
                                EndIf
                        Next
                        ;上面如没有比较成功就拿数组B进行src比较
                        $oImgs = _IEImgGetCollection ($oFrame)                               
                        for $oImg in $oImgs
                        ;MsgBox(0,"test",$oImg.nameProp&"长度"&StringLen($oImg.nameProp),1)
                                for $rs=0 To 14
                                        if StringCompare($oImg.src,$arrayB[$rs])>=0 Then
                                                ;MsgBox(0,"找到","目标是"&$arrayB[$rs],1)
                                                _IEImgClick($oFrame,$arrayB[$rs],"src")
                                        ExitLoop 2
                                        EndIf
                                Next
                        Next
                Else
                        ;没有合适字符串就等待
                        sleep(3000)
                        _IEAction($oIE,"stop")
        EndIf
WEnd

问题表现是:在第一次能够正确执行,且能成功。但之后就没有反应了。直到控制台显示IE超时这才执行一下,之后又处于定格状态。
编程很臭,请大家帮忙分析一下。多谢!

[ 本帖最后由 yyabo 于 2009-3-24 16:51 编辑 ]

顽固不化 发表于 2009-3-24 19:09:42

“ ;上面如没有比较成功就拿数组B进行src比较”
你没有判断“没有比较成功”的语句。
实际是判断完第一个For就又进入第二个For了。

xrbenbeba 发表于 2009-3-24 22:09:28

多看看基本语法吧

yyabo 发表于 2009-3-25 11:04:50

还是有些不明白。

过程是这样的:
1.判断   先是取文本检查有无特定的字符“k the”,如有就进行下面的查找点击操作,没有就等待。
   2.循环取数组A字符,检查是否与某个数组字符串A[$r]相符,如果有,就对src是A[$r][1]的点击。
   3.循环取另一个数组B,检查所有图片的src是否与某个B[$r]相符,如果有,就对src是[$r]的点击。
2和3是顺序操作,即2检查完没有点,就检查3。因为有时是根据某些字符串来点击某个图,有时是根据某个图来点另一个图。字符串和某个图,图和另一个图是一一对应的。所以我用了2维数组。

liongodmien 发表于 2009-3-25 11:57:41

问题表现是:在第一次能够正确执行,且能成功。但之后就没有反应了。直到控制台显示IE超时这才执行一下,之后又处于定格状态。

网页的STATEREADY检测一直没通过!所以造成了超时后才会继续
页: [1]
查看完整版本: 只循环一次的怪问题