Изменение данных в дочерней проблеме iFrame - не удается получить объект DOM - PullRequest
0 голосов
/ 10 октября 2010

Почему-то пытаюсь разобрать этот сайт: http://www.vblandrecords.com/index.aspx. В настоящее время я пытаюсь нажать вкладку Document type, а затем изменить значение From date.

Я предполагал, что мог бы сделать это с помощью следующего кода в VBA:

Option Explicit
Public WithEvents ieObj As InternetExplorer

Public Sub Launch()

    Set ieObj = CreateObject("InternetExplorer.Application")
    ieObj.Visible = True
    ieObj.navigate ("http://www.vblandrecords.com/index.aspx")

    While ieObj.readyState <> READYSTATE_COMPLETE

    Wend

    Dim TmpDOMObj, Frame As Object

    Set TmpDOMObj = ieObj.document.getElementById("tbMaintd3")

    TmpDOMObj.Click

    Set Frame = ieObj.document.getElementById("tbMain_frame3")
    Set TmpDOMObj = Frame.contentWindow.document.getElementById("txtStart")

    TmpDOMObj.Value = "10/1/2010"    

End Sub

Но я получил ошибку во время выполнения 91 - переменная объекта не установлена.

Я провел некоторое исследование, и оказалось, что древовидная структура в tbMain_frame3 формируется только после того, как я нажимаю вкладку tbMaind3, и я вижу ее в инструментах разработчика MSIE, но я не вижу ее в своем скрипте .

Я думал, что это было связано с проблемами безопасности iFrame, о которых я читал, но оставаться на первой вкладке и обрабатывать tbMain_frame0 работает совершенно нормально.

Может кто-нибудь дать мне подсказку о том, что происходит и как обрабатывать эту страницу?

Спасибо.

1 Ответ

1 голос
/ 10 октября 2010

Возможно, это не лучшая идея, но вы можете подождать, пока ошибка исчезнет:

Dim test
On Error Resume Next

Do While True
    test = Frame.contentWindow.Document.getElementById("txtStart").Value
    If Err.Number = 0 Then
        Exit Do
    ElseIf Err.Number > 0 And Err.Number <> 91 Then
        Exit Sub
    End If

    Err.Clear
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...