jack2684 发表于 2011-8-19 14:09:42

尝试点击框架內的標籤的时候出了奇怪错误[已解決]

本帖最后由 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","!选课管理");這個成功了
這個問題真的毫無頭緒。。。爲什麽一個行,一個卻不行。。。

骗子 发表于 2011-8-19 15:05:48

失败的那个不是有ID吗?
$oDiv = _IEGetObjById ($oIE, "welcome")
_IEAction ($oDiv, "click")

jack2684 发表于 2011-8-19 15:14:28

嗷嗷嗷啊~~嗯,發現問題了。。。我低估了網頁的複雜度。。。原來這個網頁有好幾層frame。。。要一次次獲取對象才行。。。

ps:ls的方法很直接哈!~

haorui658 发表于 2011-8-20 12:35:57

本帖最后由 haorui658 于 2011-8-20 12:38 编辑

怎么看起来是成都某大学的管理系统呢, 可能是校友, 直接执行对应javascript函数, 貌似更直接

jack2684 发表于 2011-8-20 13:45:28

回复 4# haorui658


    hehe,本人剛入門autoit,只知道用模擬點擊的方法,你說的方法毫無頭緒呢。。。能不能麻煩稍微說詳細點呢?^^

haorui658 发表于 2011-8-20 17:28:01

回复 5# jack2684


用IEnavigate可以在页面执行javascript代码, 而上两个按钮看起来点击了按钮就执行了两个javascript函数, 你可以直接执行那两个函数试一下, 不保证有效哈
页: [1]
查看完整版本: 尝试点击框架內的標籤的时候出了奇怪错误[已解決]