<# .SYNOPSIS Validates application login userid and password from a given excel sheet .EXAMPLE validateLogin users.xls This command picks userid and password from given excel sheets and validates from given URL #> #Set-PSDebug -trace 2 # Debug Information #Set-PSDebug -step # Debug using stepping if ($args) { throw "USAGE: validateLogin users.xls" } function openExcel($args) { $xl = new-object -com Excel.Application foreach ( $wbk in $args ) { foreach ($user in $users) { $xl.Workbooks.open($args) | out-null #drop the object info output $xl.Cells.Item(1,1).Value() $xl.Cells.Item(3,3).Value() $xl.Cells.Item(6,8).Value() $xl.Workbooks.Close() } } } Function NavigateTo([string] $url, [int] $delayTime = 100) { Write-Verbose "Navigating to $url" $global:ie.Navigate($url) WaitForPage $delayTime } Function WaitForPage([int] $delayTime = 100) { $loaded = $false while ($loaded -eq $false) { [System.Threading.Thread]::Sleep($delayTime) #If the browser is not busy, the page is loaded if (-not $global:ie.Busy) { $loaded = $true } } $global:doc = $global:ie.Document } Function SetElementValueByName($name, $value, [int] $position = 0) { if ($global:doc -eq $null) { Write-Error "Document is null" break } $elements = @($global:doc.getElementsByName($name)) if ($elements.Count -ne 0) { $elements[$position].Value = $value } else { Write-Warning "Couldn't find any element with name ""$name""" } } Function ClickElementById($id) { $element = $global:doc.getElementById($id) if ($element -ne $null) { $element.Click() WaitForPage } else { Write-Error "Couldn't find element with id ""$id""" break } } Function ClickElementByName($name, [int] $position = 0) { if ($global:doc -eq $null) { Write-Error "Document is null" break } $elements = @($global:doc.getElementsByName($name)) if ($elements.Count -ne 0) { $elements[$position].Click() WaitForPage } else { Write-Error "Couldn't find element with name ""$name"" at position ""$position""" break } } #Entry point #$verbosePreference = "SilentlyContinue" $verbosePreference = "Continue" $global:ie = New-Object -com "InternetExplorer.Application" $global:ie.Navigate("about:blank") $global:ie.visible = $true $global:ie.children #NavigateTo "http://www.bing.com" #SetElementValueByName "q" "powershell variable scope" #ClickElementById "sb_form_go" #Can also do: ClickElementByName "go" #NavigateTo "http://mail.com" Write-Host -ForegroundColor Green "Attempting to login to Web Application."; #SetElementValueByName "login1" "xxx@yyy.com" #SetElementValueByName "password" "password" #SetElementValueByName "lr" "lang_en" #ClickElementById "btnSignIn" function validate { begin{ #All init for this function } process{ #All process function } end{ #All finilazers } }
Sunday, May 30, 2010
Template for IE automation with PowerShell
Labels:
Windows Automation
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment