只循环一次的怪问题
下面是对一个网页的冲浪代码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 编辑 ] “ ;上面如没有比较成功就拿数组B进行src比较”
你没有判断“没有比较成功”的语句。
实际是判断完第一个For就又进入第二个For了。 多看看基本语法吧
还是有些不明白。
过程是这样的:1.判断 先是取文本检查有无特定的字符“k the”,如有就进行下面的查找点击操作,没有就等待。
2.循环取数组A字符,检查是否与某个数组字符串A[$r]相符,如果有,就对src是A[$r][1]的点击。
3.循环取另一个数组B,检查所有图片的src是否与某个B[$r]相符,如果有,就对src是[$r]的点击。
2和3是顺序操作,即2检查完没有点,就检查3。因为有时是根据某些字符串来点击某个图,有时是根据某个图来点另一个图。字符串和某个图,图和另一个图是一一对应的。所以我用了2维数组。 问题表现是:在第一次能够正确执行,且能成功。但之后就没有反应了。直到控制台显示IE超时这才执行一下,之后又处于定格状态。
网页的STATEREADY检测一直没通过!所以造成了超时后才会继续
页:
[1]