找回密码
 加入
搜索
查看: 3960|回复: 5

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

  [复制链接]
发表于 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")
 楼主| 发表于 2011-8-19 15:14:28 | 显示全部楼层
嗷嗷嗷啊~~嗯,發現問題了。。。我低估了網頁的複雜度。。。原來這個網頁有好幾層frame。。。要一次次獲取對象才行。。。

ps:ls的方法很直接哈!~
发表于 2011-8-20 12:35:57 | 显示全部楼层
本帖最后由 haorui658 于 2011-8-20 12:38 编辑

怎么看起来是成都某大学的管理系统呢, 可能是校友, 直接执行对应javascript函数, 貌似更直接
 楼主| 发表于 2011-8-20 13:45:28 | 显示全部楼层
回复 4# haorui658


    hehe,本人剛入門autoit,只知道用模擬點擊的方法,你說的方法毫無頭緒呢。。。能不能麻煩稍微說詳細點呢?^^
发表于 2011-8-20 17:28:01 | 显示全部楼层
回复 5# jack2684


  用IEnavigate可以在页面执行javascript代码, 而上两个按钮看起来点击了按钮就执行了两个javascript函数, 你可以直接执行那两个函数试一下, 不保证有效哈
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 01:54 , Processed in 0.102642 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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