Document.IHTMLDocument3_getElementsByTagName无法正常工作

时间:2017-10-03 19:03:36

标签: powershell

我很难完成这项工作。这是我的问题。

我创建了一个脚本,有几个人应该使用它,它不适用于任何一个。就在我的机器上。

所以我认为它应该是一个库或者什么东西,并决定安装visual studio 2015,只是为了测试它是否有效。它确实做到了!

可悲的是,我不得不将其删除,因为我公司的视觉工作室数量有限,而且它停止了工作。

然后我决定尝试安装VS附带的几个程序,但没有成功。我从2005年到2015年安装了Visual c ++,。net 3.5,4.5,4.6和4.7,但仍然没有运气。

我失踪了什么?任何人都可以帮我解决这个问题吗?

我正在使用的部分代码:

$IE = New-Object -ComObject InternetExplorer.Application -ErrorAction 0
$URL = 'www.site.com'
$IE.Visible = $true
$IE.Navigate($URL)

$ShellWindows = (New-Object -ComObject Shell.Application).Windows()
$Tabs = $ShellWindows | Where-Object {$_.Name -eq "Internet Explorer"}

$web = $tabs.Document.IHTMLDocument3_getElementsByTagName('Span')

我得到的错误:

Method invocation failed because [System.__ComObject] doesn't contain a method named 'IHTMLDocument3_getElementsByTagName'.
At line:103 char:2
+     $web = $tabs.Document.IHTMLDocument3_getElementsByTagName('Span')
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (IHTMLDocument3_getElementsByTagName:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

2 个答案:

答案 0 :(得分:2)

这将是获得跨度的另一种方式。 尽可能避免使用IHTMLDocuments。它们只是默认Com.Document的版本,它们按创建顺序编号。老实说,我不能想到使用其他用于罕见的向后兼​​容性,你甚至应该看看它们。使用默认文档将允许您编写用户所拥有的脚本而不是您认为的脚本。

$IE = New-Object -ComObject InternetExplorer.Application -ErrorAction 0
$URL = 'www.google.com'
$IE.Visible = $true
$IE.Navigate($URL)
while($IE.Document.readyState -ne "Complete"){
    sleep -Milliseconds 100
}
$spans = $IE.Document.getElementsByTagName("span")

答案 1 :(得分:0)

为什么放了?

$ShellWindows = (New-Object -ComObject Shell.Application).Windows()

我昨天也做了相同的更改 浪费很多时间

直接服用

$IE.Document.getElementsByTagName("span")

检查可能会运行