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: 0x800A01B6At 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") |