| | 0

PowerShell Exception 0x800A01B6 while using getElementsByTagName, getElementsByName or getElementByID

To put an Azure Web-App service under heavy load I make use of the com-object “InternetExplorer.Application” to automate an internet explorer session.

1
2
3
4
5
6
7
8
$xe = New-Object -com "InternetExplorer.Application"
$xe.visible = $true
$xe.silent = $true
$xe.Navigate($IURL)
while ($xe.Busy) {
    [System.Threading.Thread]::Sleep(10)
}

Using $xe.Document.getElementsByTagName(“Input”) enables me to enumerate the form fields and buttons. This works for the first website that I am visiting. If I then navigate to another site, $xe.Document.getElementsByTagName(“Input”) generates the following exception:

1
2
3
4
5
6
Exception from HRESULT: 0x800A01B6
At line:1 char:1
+ $Global:ie.Document.getElementsByTagName("Input")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], NotSupportedException
    + FullyQualifiedErrorId : System.NotSupportedException

Workaround:

Always use the following methods instead of the native ones:

1
2
3
IHTMLDocument3_getElementsByTagName
IHTMLDocument3_getElementsByName
IHTMLDocument3_getElementByID

Example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$xe = New-Object -com "InternetExplorer.Application"
$xe.visible = $true
$xe.silent = $true
 
$xe.Navigate($IURL)
while ($xe.Busy) {
    [System.Threading.Thread]::Sleep(10)
}
$xe.Document.IHTMLDocument3_getElementsByTagName("Input")
$xe.Navigate($IURL2)
while ($xe.Busy) {
    [System.Threading.Thread]::Sleep(10)
}
$xe.Document.IHTMLDocument3_getElementsByTagName("Input")