我正在autoit中做一个项目,我想在这个网站的iframe中读取元素的数据(例如http://worldoftanks.com/clanwars/maps/globalmap/?province=CA_92),但我需要先点击iframe右下方的链接( “登陆......”),这不是一个真正的链接,下载我需要的数据,这是一个团队表加入iframe内的锦标赛。
我知道跨越restrick但是这两个网站在同一个域上,所以我想我可以访问但我只能访问框架但不能访问其中的元素。
我想知道是否有人有建议,因为我在这个问题上坚持了将近一个月。我目前正在考虑将javascript插入到主页面的HTML中以获取该信息并将其作为主页面元素传递出去
#include <MsgBoxConstants.au3>
#include <IE.au3>
$oIE=_IECreate('http://worldoftanks.com/clanwars/maps/globalmap/?province=CA_91')
Local $oFrames = _IEFrameGetCollection($oIE)
Local $iNumFrames = @extended
Local $sTxt = $iNumFrames & " frames found" & @CRLF & @CRLF
Local $oFrame = 0
$oFrame = _IEFrameGetCollection($oIE, 0)
$sTxt &= _IEPropertyGet($oFrame , "innerhtml") & @CRLF ; it crash right here or return code 80020009 if using error handle
MsgBox($MB_SYSTEMMODAL, "Frames Info", $sTxt)
答案 0 :(得分:0)
$oFrame
可以和普通的IE窗口完全相同,你真的尝试过任何_IE *函数吗?因为它们都有效。
例如,这里是_IEFrameGetCollection()
示例与帮助文件中的_IELinkGetCollection()
示例合并。
#include <IE.au3>
#include <MsgBoxConstants.au3>
Local $oIE = _IE_Example("frameset")
Local $oFrames = _IEFrameGetCollection($oIE)
Local $iNumFrames = @extended
Local $sTxt = $iNumFrames & " frames found" & @CRLF & @CRLF
Local $oFrame = 0
For $i = 0 To ($iNumFrames - 1)
$oFrame = _IEFrameGetCollection($oIE, $i)
$sTxt &= _IEPropertyGet($oFrame, "innertext") & @CRLF
Next
;~ MsgBox($MB_SYSTEMMODAL, "Frames Info", $sTxt)
; Get the frame object we are interested in.
$oFrame = _IEFrameGetCollection($oIE, 1)
; Add a link as an example.
_IEBodyWriteHTML($oFrame, '<a href="#test">This is a link</a>')
; Get all links in that frame:
Local $oLinks = _IELinkGetCollection($oFrame, -1)
Local $iNumLinks = @extended
Local $sTxt = $iNumLinks & " links found" & @CRLF & @CRLF
For $oLink In $oLinks
$sTxt &= $oLink.href & @CRLF
Next
MsgBox($MB_SYSTEMMODAL, "Link Info", $sTxt)
_IEQuit($oIE)