自动:访问并模拟网站iframe中的点击链接

时间:2014-04-11 19:11:28

标签: javascript dom iframe autoit

我正在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)

1 个答案:

答案 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)