James
James

Reputation: 1

Unable to Cast COM Object of type

Language: Powershell

Usage: Login into Website

Code: (NOTE: Actual values for lines 1., 2., and 4. have not been provided)

$username = "User"
$password = "Password" 
$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("URL")
$ie.visible =$true
$doc = $ie.document

$doc.getElementByID("username").value=$username
$doc.getElementByID("password").value=$password
$link = @($doc.getElementsByTagName('A')) | where-object {$_.innerText -eq 'Log In'}
$link.click

Lines 1 thru 6 work perfectly and launch the default browser to the Login Page of the specified URL.

Lines 7 thru 9 produce the following errors:

Line 7:

Exception calling "getElementById" with "1" argument(s): "Unable to cast 

COM object of type 'mshtml.HTMLDocumentClass' to interface type 

'mshtml.DispHTMLDocument'. This operation failed because the 

 QueryInterface call on the COM component for the interface with IID 

'{3050F55F-98B5-11CF-BB82-00AA00BDCE0B}' failed due to the following 

error: No such interface supported (Exception from HRESULT:

0x80004002 (E_NOINTERFACE))."

At line:1 char:20
+ $doc.getElementByID <<<< ("username").value=$username
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

Line 8:

Exception calling "getElementById" with "1" argument(s): "Unable to cast 

COM object of type 'mshtml.HTMLDocumentClass' to interface type 

'mshtml.DispHTMLDocument'. This operation failed because the   

QueryInterface call on the COM component for the interface with IID 

'{3050F55F-98B5-11CF-BB82-00AA00BDCE0B}' failed due to the following 

error: The RPC server is unavailable. (Exception from HRESULT: 

0x800706BA)."

At line:1 char:20
+ $doc.getElementByID <<<< ("password")
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

Line 9:

Exception calling "getElementsByTagName" with "1" argument(s): "Unable to 

cast COM object of type 'mshtml.HTMLDocumentClass' to interface type 

'mshtml.DispHTMLDocument'. This operation failed because the 

QueryInterface call on the COM component for the interface with IID 

'{3050F55F-98B5-11CF-BB82-00AA00BDCE0B}' failed due to the following 

error: The object invoked has disconnected from its clients. (Exception 

from HRESULT: 0x80010108 (RPC_E_DISCONNECTED))."

At line:1 char:36

+ $link = @($doc.getElementsByTagName <<<< ('A')) | where-object   
{$_.innerText -eq 'Log In'}

+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

I am not sure what this error is telling me and need some suggestions from some Powershell Gurus out there. I could not find anything in the stack that has this issue covered based on the use of Powershell. Thanks in advance for any help.

Upvotes: 0

Views: 860

Answers (1)

hysh_00
hysh_00

Reputation: 839

What happens if you put sleep before looking into the document?

do { Sleep 1 } while( $ie.Busy -or $ie.ReadyState -ne 4 )

like this

$ie.visible =$true
do{Sleep 1} while( $ie.Busy -or $ie.ReadyState -ne 4 )
$doc = $ie.document

Upvotes: 1

Related Questions