无法找到iframe内容

时间:2014-02-04 21:53:37

标签: html powershell iframe

我正在使用powershell在我的工作中通过Internet Explorer自动化本地aspx Web应用程序。我已经学会了我认为完成这些任务所必需的东西。我能够登录,从下拉列表中选择并提交表格。我没有添加代码,因为我觉得它会剥夺我认为更基本问题的真正问题。

最后,我到达了一个页面,我想要做的就是点击这一个按钮。我搜索了页面的来源,找不到任何提示按钮或点击。非常失望。

然后,我在Internet Explorer中使用了F12开发工具,并使用了“搜索HTML”功能。瞧,我找到了。按钮是一个输入元素,在这个丑陋的HTML页面中有很多层。为什么这个元素在这里但不在页面源中?!!为了我的挫败感。

如果有帮助,它位于iframediv内。我已经完成了我在iframe上找到的所有内容......例如.contentdocument.contentwindow以及.document,但它们都是空白的。我在开发人员工具上的iframe HTML中看到它。跆拳道。我找不到这个元素。请帮忙。

2 个答案:

答案 0 :(得分:1)

这实际上是IE对象模型中非常令人沮丧的部分。 iFrame就在那里,但它有点难以实现。以下是使用我的AutoBrowse模块启动页面后操作iFrame的示例代码。

# Gets the active browser (at this point in the script it will be the create or edit contribution page)
$browser = Get-browser | Where-Object { $_.LocationUrl -like "http://gallery.technet.microsoft.com/*" }
$b = $browser
# Search thru the iFrames within the document for the frame you want
$editorFrame = $b.Document.getElementsByTagName("iframe") |
    Where-Object { $_.Src -like "*source_editor.htm" }
$aboutModule = 'stuff'
# Update the content in the inner frame
$editorFrame.contentDocument.getElementById("htmlSource").value = $aboutModule
$editorFrame.contentDocument.getElementById("insert").click()

只是看看iFrame操作的尴尬让我想要将功能添加到AutoBrowse以使其更容易。我可能会这样做。无论如何。这就是你可以操纵浏览器对象来处理iFrame内容的方法。享受。

答案 1 :(得分:0)

要解析此线程,访问iframe内容的传统方法可以正常工作。我能够通过创建变量doc2 = $iframename.contentwindow.document等来找到我需要的元素。我不完全明白为什么我不能早点做到。我试图通过Powershell命令行而不是ISE来这样做。这在ISE中作为脚本运行良好。谢谢你的帮助。