找回密码
 加入
搜索
查看: 5679|回复: 15

[IE类操作] 求教,关于获取网页提示信息~~

  [复制链接]
发表于 2016-8-19 20:18:24 | 显示全部楼层 |阅读模式
本帖最后由 Srsly 于 2016-8-31 23:34 编辑

已另开一帖,编辑掉!!~
 楼主| 发表于 2016-8-19 20:19:59 | 显示全部楼层
我想获取图1里的红字内容。。。该怎么处理。
还望各位多指点!!
发表于 2016-8-19 22:01:25 | 显示全部楼层
直接读取网页源码
 楼主| 发表于 2016-8-19 22:05:28 | 显示全部楼层
回复 3# chamlien

_IEBodyReadHTML ( ByRef $oObject )
这个函数?

我之前用_IEBodyReadText ( ByRef $oObject )
没成功!
发表于 2016-8-19 22:42:46 | 显示全部楼层
回复 4# Srsly



#include <IE.au3>

$oIE_Login =  _IECreate("http://www.jinmei.com/Login.aspx","url")
$sUserName = _IEGetObjById($oIE_Login,"txtUserName")
_IEFormElementSetValue($sUserName,"UserName")
$sPassWord = _IEGetObjById($oIE_Login,"txtPassWord")
_IEFormElementSetValue($sPassWord,"pswd")        
$BtnLogin = _IEGetObjById($oIE_Login,"btnLogin")
_IEAction($BtnLogin,"click")

Sleep(2000)
$Ele = _IEGetObjById($oIE_Login,"lblMsg")
MsgBox(0,"元素html",$Ele.innerHTML)


innerHTML - 节点(元素)的文本值 http://www.runoob.com/htmldom/htmldom-methods.html
 楼主| 发表于 2016-8-20 08:41:51 | 显示全部楼层
回复 5# nmgwddj


    感谢,等周一上班我测试一下!!
公司内网,现在测试不了。
发表于 2016-8-20 09:37:44 | 显示全部楼层
顶,学习了,最近也在搞网页方面的事情!
 楼主| 发表于 2016-8-20 14:11:25 | 显示全部楼层
回复 5# nmgwddj

另外请教下:网页上,点击一个“提交”button后,弹出来一个小窗口(窗口标题为:“来自网页的消息”)
我用如下方法点击不成功:
$hWnd = WinWait("来自网页的消息")
WinActivate($hWnd)

ControlClick($hWnd,"","Button1")
;Send("{Enter}")         也没反映。
发表于 2016-8-20 17:15:32 | 显示全部楼层
回复 8# Srsly


    在点击前先执行一个进程去等待弹出的出现,因为弹出窗口后,程序已经阻塞了,04,05行是永远不会执行的,
因此要在01行前面运行一句:
Run(@AutoItExe & ' /AutoIt3ExecuteLine  "Dim $s=''[CLASS:#32770]'',$a=WinWait($s), $a=WinActivate($s)=WinWait($s), $a=WinActivate($s), $a=ControlClick($s, '''', ''[CLASS:Button; INSTANCE:1]'')"')
 楼主| 发表于 2016-8-20 22:01:24 | 显示全部楼层
回复 9# chamlien


感谢!!
周一上班我测试下。
我还以为挺简单个问题,没想到还那么复杂。
我完全都没往你说这个方向去想,一直以为我代码哪里出了问题呢!!
 楼主| 发表于 2016-8-26 20:25:17 | 显示全部楼层
回复 5# nmgwddj

用你的这段代码试了,MsgBox输出内容仍然为空~~!!

是不是“”btnLogin“点击后,页面没刷新?仍然获取到的是点击之前的页面内容?~~

求解~~!!
发表于 2016-8-27 23:19:18 | 显示全部楼层
回复 11# Srsly


    有可能,你可以做一下延迟,或者等页面加载完毕再取数据。
 楼主| 发表于 2016-8-28 15:49:44 | 显示全部楼层
回复 12# nmgwddj


    延迟和_IELoadWait痘试过了!
不知道什么情况,愁死了!
发表于 2016-8-28 18:32:41 | 显示全部楼层
回复 13# Srsly


    使用前校验一下 $oIE 的对象是否有效,这个命令在浏览器 console 窗口敲一下看能不能取到。如果 console 都取不到证明方法用错了。
 楼主| 发表于 2016-8-28 18:51:42 | 显示全部楼层
本帖最后由 Srsly 于 2016-8-28 18:54 编辑

回复 14# nmgwddj

console是能取到的。

手动打开网页,输入错误信息,让红字提示信息出现。
然后运行以下代码,能够得到正确结果。
#include <IE.au3>
$WinHandle = WinGetHandle("[CLASS:IEFrame]")   
$ConHandle = ControlGetHandle($WinHandle,"","Edit1")
$CurrenSite = _GUICtrlEdit_GetText($ConHandle)
$oIE_Login = _IEAttach($CurrenSite,"URL")
$Ele = _IEGetObjById($oIE_Login,"lblMsg")
MsgBox(0,"元素html",$Ele.innerHTML)
用AU3自动输入登录信息,然后登录,就获取不到信息。
我真是¥%#!)#*...
后面几个页面也有这样的问题。
获取到的信息,总是上一个页面的信息,不是当前页面的。
比如说,这个页面上,得到的结果就是点击登录之前那个页面的信息。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 01:36 , Processed in 0.113407 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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