Доступ к элементам внутри iframe с использованием VBA - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь получить доступ к элементам iframe на веб-странице, созданной с помощью Wix Site Builder, с помощью PowerPoint VBA.

Я перепробовал все, что нашел в Google, а также на других веб-страницах, но яне могу понять это.Наиболее распространенные ошибки: «Ошибка автоматизации», когда я пытаюсь использовать contentDocument, и «Отказ в доступе», когда я пытаюсь использовать contentWindow.

Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.navigate "https://pptgamespt.wixsite.com/mppp/tests2"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Pausecode (2)
objIE.document.getElementsByTagName("iframe")(0).contentDocument.getElementById("input").Value = "some value"

. Я пытаюсь изменить значение вводас идентификатором «input», который находится внутри iframe, который не имеет класса или идентификатора.Приведенный выше код является последним, который я пробовал, который выдает ошибку «Ошибка автоматизации».

1 Ответ

0 голосов
/ 28 декабря 2018

Я думаю, что вы столкнетесь с теми же проблемами политики происхождения для IE.Вы можете получить src iframe и перейти к этому

Option Explicit
Public Sub SendInfo()
    Dim ie As New InternetExplorer

    With ie
        .Visible = True
        .Navigate2 "https://pptgamespt.wixsite.com/mppp/tests2"

        While .Busy Or .readyState < 4: DoEvents: Wend

        .Navigate2 ie.document.querySelector("iframe").src

        While .Busy Or .readyState < 4: DoEvents: Wend

        .document.querySelector("#input").Value = "Bob"
        .document.querySelector("#send").Click

        While .Busy Or .readyState < 4: DoEvents: Wend
        Stop
        .Quit
    End With
End Sub

Используя selenium basic и chrome, чтобы обойти ту же проблему политики происхождения.После установки Selen Basic необходимо добавить ссылку на библиотеку типов Selen vbe> Инструменты> Ссылки> Библиотека типов Selen

Option Explicit
Public Sub EnterInfo()
    Dim d As WebDriver
    Set d = New ChromeDriver
    Const URL = "https://pptgamespt.wixsite.com/mppp/tests2"

    With d
        .Start "Chrome"
        .get URL
        .SwitchToFrame .FindElementByCss("iframe")
        Do
        Loop While .FindElementsByCss("#input").Count = 0
        .FindElementByCss("#input").SendKeys "tada"
        Stop
        .Quit
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...