本帖最后由 jack2684 于 2011-8-19 15:14 编辑
这的这个网页里面有两个frame,要写脚本点击其中的链接标签,奇怪的是其中的frame的点击正常,但是另一个frame里面的链接怎么点击都提示warning,应该是获取失败:
--> IE.au3 V2.4-0 Warning from function _IELinkClickByText, $_IEStatus_NoMatch
请看这是可点击的按钮的网页代码:
这是点击失败的按钮的网页代码
下面是我的源代码,其中函数_IELinkClickByTitle是“风行者”半夜写的(感動啊~),自己加了一点东西:(大家看的時候可以直接跳過哈~)
#include <IE.au3>
Func _IELinkClickByTitle(ByRef $o_object,$s_linkType, $s_linkText, $i_index = 0, $f_wait = 1)
If Not IsObj($o_object) Then
__IEErrorNotify("Error", "_IELinkClickByText", "$_IEStatus_InvalidDataType")
Return SetError($_IEStatus_InvalidDataType, 1, 0)
EndIf
;
Local $found = 0, $linktext, $links = $o_object.document.links
$i_index = Number($i_index)
;MsgBox(0,"links",$links)
For $link In $links
;MsgBox(0,"link of"&$links,$link)
Select
Case $s_linkType =="title"
$linktext = $link.Title & ""
Case $s_linkType =="id"
$linktext = $link.id & ""
Case $s_linkType =="href"
$linktext = $link.href & ""
EndSelect
If $linktext = $s_linkText Then
If ($found = $i_index) Then
$link.click
If $f_wait Then
_IELoadWait($o_object)
Return SetError(@error, 0, -1)
EndIf
Return SetError($_IEStatus_Success, 0, -1)
EndIf
$found = $found + 1
EndIf
Next
__IEErrorNotify("Warning", "_IELinkClickByText", "$_IEStatus_NoMatch")
Return SetError($_IEStatus_NoMatch, 0, 0) ; Could be caused by parameter 2, 3 or both
EndFunc ;==>_IELinkClickByTitle
;开始登陆
$oIE=_IECreate("http://byjw.bupt.edu.cn:8080/",0,1,1,-1)
$username=_IEGetObjByName($oIE,"zjh")
$passwd=_IEGetObjByName($oIE,"mm")
_IEDocInsertText($username,"xxxxx")
_IEDocInsertText($passwd,"xxxxx")
$oLoginBtn=_IEGetObjById($oIE,"btnSure");
_IEAction($oLoginBtn,"click")
;登陆之後
$oFrm1=_IEFrameGetObjByName($oIE,"bottomFrame")
_IELinkClickByTitle($oFrm1,"href","/xsxxviewAction.do");這個失敗了
;$oFrm1=_IEFrameGetObjByName($oIE,"topFrame")
;_IELinkClickByTitle($oFrm1,"title","!选课管理");這個成功了
這個問題真的毫無頭緒。。。爲什麽一個行,一個卻不行。。。 |