I have had a need to perform browser automation for some time. Apparently, this can be done pretty easily with PowerShell, providing you have a basic understanding of the DOM and how to manipulate it.
Start by create an Internet Explorer object. I know, I know. Internet Explorer. PowerShell is Microsoft, so just get over it. We all know it sucks.
#create a new browser object to handle all of our navigation $Browser = New-Object -com InternetExplorer.Application
If you want to watch the automation, which you do because it’s cool, be sure to set the visible property to true.
#go ahead and show the browser window $Browser.visible = $true
To browse to a specific url, just use the navigate method.
#Navigate to the URL Defined above $Browser.navigate("www.google.com")
In some cases, you need to tell the thread to sleep for an arbitrary amount of time. Otherwise the script will just keep running and you won’t accomplish much. I put a statement similar to this after almost every call.
#Sleep the thread while the page is loading Start-Sleep -Milliseconds 1000;
To click on an item, you need to know it’s name in the DOM
You can set the value of a text-box
$Browser.Document.getElementById("tbName").value = $reportName
Check a box
$Browser.Document.getElementById("CheckBoxList1_1").checked = $true
There’s a lot more that can be done. Play around with the Browser.Document properties a little bit. In the end, it’s a lot easier to use a tool like Auto IT, but it’s cool to script out some automation.