使用VBA访问iframe中的元素

时间:2018-12-27 21:25:09

标签: vba powerpoint

我正在尝试使用PowerPoint VBA在使用Wix Site Builder创建的网页上访问iframe的元素。

我尝试了在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"

我正在尝试使用iframe内的id为“ input”的输入更改输入的值,该输入没有类或id。上面的代码是我尝试的最后一个抛出错误“自动化错误”的代码。

1 个答案:

答案 0 :(得分:0)

我认为您会遇到IE的原产地政策问题。您可以获取iframe的src并导航到该页面

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之后,必须添加对硒类型库的引用vbe>工具>引用>硒类型库

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