Reputation: 1
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
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