找回密码
 加入
搜索
查看: 18339|回复: 25

如何点击当前已打开页面的按钮(位置不固定,页面是框架中带iframe嵌套+浮动层)

  [复制链接]
发表于 2008-6-23 08:44:22 | 显示全部楼层 |阅读模式
现有一网页 已打开状态下需要点击页面中的 《返回》按钮返回   按钮为 <a href="/mes/jj.jsp">返回</a> 这样的
想知道如何用au3自动点击该按钮   我用下面的方式实现老是出错,请高手帮助我一下,谢谢
1、
Send("{TAB 6}")
Send("{ENTER}")
2、
MouseMove(116,258)
MouseDown("left")
MouseUp("left")
Sleep(2000)
MouseMove(253,315)
MouseDown("left")
MouseUp("left")
MouseClick("left",88,303,2)


在各位的帮助及自己的努力下终于写出了成功解放双手的代码:

在此感谢大家
$path = "E:\材料条形码图片\根据厂家分类(新)\"
$barcode = ClipGet()
$na = ".bmp"

$chbm = StringSplit($barcode, '*', 1)
$gys = IniRead("E:\供应商编码.ini", "供应商", $chbm[2],"未知")
;MsgBox(0, "结果", $gys)
;MsgBox(0, "存货编码", $chbm[1])
;MsgBox(0, "供应商", $chbm[2])
;MsgBox(0, "路径", $path&$chbm[2]&"\")
;MsgBox(0, "路径", $path&$chbm[2]&"\"&$chbm[1]&$na)


Filecopy( "C:\windows\system32\Label.bmp",$path&$gys&"\",8) 
FileMove( $path&$gys&"\Label.bmp", $path&$gys&"\"&$chbm[1]&$na)
WinActivate($gys)
WinActivate("飞达集团物流条码管理系统")
Send("{BROWSER_BACK}")
Send("{BROWSER_BACK}")
Send("{BROWSER_BACK}")
Sleep(7000)
WinActivate("飞达集团物流条码管理系统")
Send("{TAB 5}")
Send("{ENTER}")
;If Not WinActive("飞达集团物流条码管理系统 - Windows Internet Explorer","") Then WinActivate("飞达集团物流条码管理系统 - Windows Internet Explorer","")
;WinWaitActive("飞达集团物流条码管理系统 - Windows Internet Explorer","")
MouseMove(435,401)
MouseClick("left",435,401,1)
Send("{TAB}")
Send("{ENTER}")
Sleep(1000)
MouseMove(435,401)
MouseClick("left",435,401,1)
Send("{TAB 6}")
Send("{ENTER}")
Sleep(2000)
MouseMove(294,302)
MouseClick("left",294,302,3)
Send("{CTRLDOWN}c{CTRLUP}")
run("C:\Users\Administrator\Desktop\AU3\xxxx.exe")


[ 本帖最后由 ngzyl 于 2008-6-26 16:27 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2008-6-23 08:57:42 | 显示全部楼层
给出完整网页,这样的提问谁也帮不了你.
参考帮助中的ie.au3
 楼主| 发表于 2008-6-23 10:59:37 | 显示全部楼层
图片已经上传了 谢谢
 楼主| 发表于 2008-6-23 14:02:18 | 显示全部楼层

回复 2# pcbar 的帖子

请版主帮忙啊  !图片已经传了,看了ie.au3的帮助 无果
 楼主| 发表于 2008-6-23 14:47:06 | 显示全部楼层
谁帮帮我啊!!!!
发表于 2008-6-23 17:17:46 | 显示全部楼层
#include <IE.au3>
$oie=_IEAttach("飞达集团")
_IELinkClickByText($oie,"返回")
 楼主| 发表于 2008-6-23 17:25:10 | 显示全部楼层
原帖由 pcbar 于 2008-6-23 17:17 发表
#include
$oie=_IEAttach("飞达集团")
_IELinkClickByText($oie,"返回")



这个不行  我试过了。。。。。

>运行:(3.2.13.2):D:\autoit3\autoit3.exe "C:\Users\Administrator\Desktop\AU3\zz.au3"   
--> IE.au3 V2.4-0 Warning from function _IELinkClickByText, $_IEStatus_NoMatch
+>17:33:16 AutoIT3.exe 完成:[CODE]:0
+>17:33:17 ACNWrapper 完成!
>退出代码: 0    时间: 5.371

[ 本帖最后由 ngzyl 于 2008-6-23 17:33 编辑 ]
发表于 2008-6-23 21:27:37 | 显示全部楼层
看图片有可能是J2EE架构的管理系统
右边可能是浮动层
如果右边不是浮动层那应该用IE.AU3里面就可以解决
 楼主| 发表于 2008-6-25 14:46:39 | 显示全部楼层
原帖由 auto 于 2008-6-23 21:27 发表
看图片有可能是J2EE架构的管理系统
右边可能是浮动层
如果右边不是浮动层那应该用IE.AU3里面就可以解决


的确系统是j2ee架构的

<frameset framespacing="0" border="0" rows="96,*,5" frameborder="0">
  <frame SRC="TOP.htm" name="fraToolbar" frameborder="no" TOPMARGIN="0"  LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" scrolling="no">
  <frame name="main" src="Body.jsp" target = "main">
  <frame name="last" scrolling="no" noresize target="main" hidden src="bottom.htm">
  <noframes>
  <body oncontextmenu=self.event.returnValue=false>
  <p></p>
  </body>
  </noframes>
</frameset>

有什么办法么!
发表于 2008-6-25 15:19:33 | 显示全部楼层
大概看了下,框架内的连接还是可以点击的
#include <IE.au3>
$oIE = _IECreate ("这个用你的地址", 1, 1, 0);
也可以用这样 $oie=_IEAttach("飞达集团")这个来匹配

$oFrames = _IEFrameGetCollection ($oIE,1)
;这个重要了,页面内第1个框架,你要根据需要改了,看网页内一共有几个框架,也就是几个frame
这个参数要用个数减1,你的应该是2,也就是$oFrames = _IEFrameGetCollection ($oIE,2)

_IELinkClickByText ($oFrames,"返回")

我自己找了个例子试了下,还是可以点的

我把我测试的例子放上来

[ 本帖最后由 rho123 于 2008-6-25 15:28 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2008-6-25 15:47:26 | 显示全部楼层
原帖由 rho123 于 2008-6-25 15:19 发表
大概看了下,框架内的连接还是可以点击的
#include
$oIE = _IECreate ("这个用你的地址", 1, 1, 0);
也可以用这样 $oie=_IEAttach("飞达集团")这个来匹配

$oFrames = _IEFrameGetCollection ($oIE,1)
;这个重 ...


谢谢!  我试了下 还是不行
$oIE = _IECreate ("这个用你的地址", 1, 1, 0); 这个不适合我这里使用  因为是在已经打开的页面下操作 这个系统是需要登录的

我的地址栏:http://192.168.1.51:8888/mes/  是这个 不会变的  不管点什么链接 都在框架下  地址栏不会变的

还有就是在任何时候查看源文件代码都是主页的代码如下:
  <frameset framespacing="0" border="0" rows="96,*,5" frameborder="0">
  <frame SRC="TOP.htm" name="fraToolbar" frameborder="no" TOPMARGIN="0"  LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" scrolling="no">
  <frame name="main" src="Body.jsp" target = "main">
  <frame name="last" scrolling="no" noresize target="main" hidden src="bottom.htm">
  <noframes>
  <body oncontextmenu=self.event.returnValue=false>
  <p></p>
  </body>
  </noframes>
</frameset>

另外  如果使用右键在页面上查看源文件  可以看到真正的代码,但是我不知道怎么实现!!!!
下面是需要点击返回的页面代码:


<html>
  <head>
<META http-equiv=Content-Type content="text/html;charset=GBK" >
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  
    <title>projdetail</title>
    <link href="style.css" rel="stylesheet" type="text/css">
  </head>
  <body>
<tr>DWT7045SR*已经生成,不可重复生成</tr><br>
生成成功

<a href = "/mes/feida/projimp.jsp?prjid=fdslfc&facid=DWT7045SR">返回</a>
  </body>
</html>

请高手帮忙阿!

使用如下代码测试
#include <IE.au3>
$oIE = _IEAttach ("飞达集团", "embedded")
$sHTML = _IEDocReadHTML ($oIE)
$oFrames = _IEFrameGetCollection ($oIE,分别使用了0、1、2、3其中3返回的是0)
$s2html = _IEDocReadHTML($oFrames)
MsgBox(0, "The URL", $s2html)
_IELinkClickByText ($oFrames,"返回")
MsgBox(0, "The URL", _IEPropertyGet ($oIE,"locationurl"))
MsgBox(0, "shtml", $sHTML)

得到三个页面如图


[ 本帖最后由 ngzyl 于 2008-6-25 16:46 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2008-6-25 16:23:01 | 显示全部楼层
$oIE = _IEAttach ( "http://192.168.1.51:8888/mes/" , "URL")
$oFrames = _IEFrameGetCollection ($oIE)
$iNumFrames = @extended
For $i = 0 to ($iNumFrames - 1)
    $oFrame = _IEFrameGetCollection ($oIE, $i)
    $txt =  _IEBodyReadText (  $oFrame )
    if StringInStr ($txt , "返回")  <> 0 then _IELinkClickByText($oFrames,"返回")
Next



看不到网页。。在不行偶也么办法

[ 本帖最后由 rho123 于 2008-6-25 16:24 编辑 ]
 楼主| 发表于 2008-6-25 16:44:21 | 显示全部楼层
原帖由 rho123 于 2008-6-25 16:23 发表
$oIE = _IEAttach ( "http://192.168.1.51:8888/mes/" , "URL")
$oFrames = _IEFrameGetCollection ($oIE)
$iNumFrames = @extended
For $i = 0 to ($iNumFrames - 1)
    $oFrame = _IEFrameGetCollection ($oI ...


下面的附件是body.jsp的代码


[/code]这个jsp里面有2个iframe如下:
<Iframe  id=LFr name=LFr style="HEIGHT: 100%; VISIBILITY:inherit; WIDTH:160; Z-INDEX: 2" scrolling="AUTO" frameborder=1 src="LeftTree.jsp" >
</Iframe>
<Iframe  id="RFr" name="RFr" style="HEIGHT: 100%; VISIBILITY: inherit; WIDTH: 100%; Z-INDEX: 0" scrolling="AUTO" frameborder="0" src="RightPane.jsp">
[ 本帖最后由 ngzyl 于 2008-6-25 17:04 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2008-6-25 16:56:25 | 显示全部楼层
下面的附件是lefttree.jsp和rightpane.jsp的代码:


[ 本帖最后由 ngzyl 于 2008-6-25 17:03 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2008-6-25 17:10:35 | 显示全部楼层
原帖由 auto 于 2008-6-23 21:27 发表
看图片有可能是J2EE架构的管理系统
右边可能是浮动层
如果右边不是浮动层那应该用IE.AU3里面就可以解决



的确是浮动层的,  浮动层的该怎么做啊!  帮帮我啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 08:34 , Processed in 0.116009 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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