smooth 发表于 2013-5-19 22:12:12

_IEImgGetCollection无法循环出网页图片链接


#include <IE.au3>

$oIE = _IECreate("202.107.222.146")
Local $oImgs = _IEImgGetCollection($oIE)
Local $iNumImg = @extended
MsgBox(4096, "Img Info", "There are " & $iNumImg & " images on the page")
For $oImg In $oImgs
        MsgBox(4096, "Img Info", "src=" & $oImg.src)
        _IEImgClick($oIE, $oImg.src)
Next
在使用上述代码对用友客户端登录网页的图片链接进行循环时,只能循环到网页最上面和最下面两张没有链接的图片,而中间的UFIDA NC(对应的图片是ufida_nc_over.png),IUFO(对应的图片是ufida_iufo_over.png)这两张图片却无法循环出其图片链接,请教这是什么现象?谢谢!

shqf 发表于 2013-5-20 09:12:03

看202.107.222.146的网页源码,你说的二处没有用IMG标签指定图片位置名称等有关信息,而是用了函数,在函数里再指定的图片的信息,而_IEImgGetCollection()的帮助如此说:返回一个文档内IMG标签的对象变量集合,所以用_IEImgGetCollection()达不到你要的效果。

smooth 发表于 2013-5-20 09:19:52

回复 2# shqf
网页源文件我也查看了,但是看得不是很懂,没学过C语言。有什么办法吗?

shqf 发表于 2013-5-20 10:40:47

无需懂C语言,略懂HTML,知道标签的作用就行。
Autoit中模拟点击链接的函数、方法很多,可根据链接的不同类型,也可根据链接索引,或获取全部链接的对象集合,或根据ID等先获取单个链接对象等等。根据网页的不同情况需采用适合的不同的方法或函数。
以下是获取全部链接对象的集合的:#include <IE.au3>

$oIE = _IECreate("202.107.222.146")
Local $oLinks = _IELinkGetCollection($oIE)
Local $iNumlink = @extended
MsgBox(4096, "Link Info", "There are " & $iNumLink & " Links on the page")
For $oLink In $oLinks
      MsgBox(4096, "Link Info", "href=" &$oLink.href)
      _IEImgClick($oIE, $oLink.href)
Next

smooth 发表于 2013-5-20 11:09:46

回复 4# shqf

这个我测试过了,达不到效果,找到的两个链接,第一个有效,第二个无效。
我逐个函数测试,发现以下函数可以满足我的要求:
#include <IE.au3>

Local $oIE = _IECreate("202.107.222.146")
_IELinkClickByIndex($oIE, 1)
0表示打开第一个链接,1表示打开第二个链接。

shqf 发表于 2013-5-20 13:03:09

第9句忘记改了,为如下就行了:_IEAction($oLink, "click")
页: [1]
查看完整版本: _IEImgGetCollection无法循环出网页图片链接