I have this code written in PowerShell:
$username = \"xxxxxx\";
$password = \"xxxxxx\";
$url = \"www.facebook.com/login\";
$ie = New-Object -com internetexp
Workaround Always use the following methods instead of the native ones:
IHTMLDocument3_getElementsByTagName
IHTMLDocument3_getElementsByName
IHTMLDocument3_getElementByID
Thanks to Paul Lim Here
This might happen as IE is still loading the page or parsing DOM. Try waiting for IE not to be busy before accessing page elements. A simple check for IE's Busy property will do. Like so,
$username="myname"
$password="mypass"
$url = "www.facebook.com/login"
$ie = New-Object -com internetexplorer.application
$ie.visible = $true
$ie.navigate($url)
# Sleep while IE is busy. Check 10 times per second, adjust delay as needed
while($ie.Busy) { Start-Sleep -Milliseconds 100 }
# IE is not busy with document anymore, pass credentials and click the logon
($ie.document.getElementsByName("email") |select -first 1).value = $username
($ie.document.getElementsByName("pass") |select -first 1).value = $password
($ie.document.getElementsByName("login") |select -first 1).click()
use this:
$Url = "http://websiteurl"
$ie = New-Object -com internetexplorer.application;
$ie.visible = $true; # make to $true to see the result in webpage
$ie.navigate($Url);
while ($ie.Busy -eq $true) { Start-Sleep -Seconds 10; }
($ie.Document.IHTMLDocument3_getElementsByName("btnname") | select -first 1).click();
$ie.quit()