找回密码
 加入
搜索
查看: 1955|回复: 4

只循环一次的怪问题

[复制链接]
发表于 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[1]
                        for $r=0 to 32
                                If StringInStr($sText,$arrayA[$r][0])>0 Then
                                MsgBox(0,"link","应点图的src:"& $arrayA[$r][1],1)
                                _IEImgClick($oFrame,$arrayA[$r][1],"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])>=0 Then
                                                ;MsgBox(0,"找到","目标是"&$arrayB[$rs][1],1)
                                                _IEImgClick($oFrame,$arrayB[$rs][1],"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了。
发表于 2009-3-24 22:09:28 | 显示全部楼层
多看看基本语法吧
 楼主| 发表于 2009-3-25 11:04:50 | 显示全部楼层

还是有些不明白。

过程是这样的:
1.判断     先是取文本检查有无特定的字符“k the”,如有就进行下面的查找点击操作,没有就等待。
   2.循环取数组A字符,检查是否与某个数组字符串A[$r][0]相符,如果有,就对src是A[$r][1]的点击。
   3.循环取另一个数组B,检查所有图片的src是否与某个B[$r][0]相符,如果有,就对src是[$r][1]的点击。
2和3是顺序操作,即2检查完没有点,就检查3。因为有时是根据某些字符串来点击某个图,有时是根据某个图来点另一个图。字符串和某个图,图和另一个图是一一对应的。所以我用了2维数组。
发表于 2009-3-25 11:57:41 | 显示全部楼层
[qoute]问题表现是:在第一次能够正确执行,且能成功。但之后就没有反应了。直到控制台显示IE超时这才执行一下,之后又处于定格状态。[/qoute]

网页的STATEREADY检测一直没通过!所以造成了超时后才会继续
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-23 05:26 , Processed in 0.079754 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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