Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <#
- .SYNOPSIS
- Wait until the browser loads the expected element was some Text data.
- #>
- function Wait-UntilElementLoaded {
- [CmdletBinding()]
- param(
- [Parameter(Mandatory = $true)]
- [OpenQA.Selenium.IWebDriver] $Driver,
- [Parameter(Mandatory = $true, ParameterSetName = "Id")]
- [string] $Id,
- [Parameter(Mandatory = $true, ParameterSetName = "ClassName")]
- [string] $ClassName,
- [Parameter(Mandatory = $true, ParameterSetName = "Name")]
- [string] $Name,
- [Parameter(Mandatory = $true, ParameterSetName = "TagName")]
- [string] $TagName,
- [Parameter(Mandatory = $true, ParameterSetName = "LinkText")]
- [string] $LinkText,
- [Parameter(Mandatory = $true, ParameterSetName = "XPath")]
- [string] $XPath,
- [int] $TimeOutSeconds = 10
- )
- Write-Verbose ("Wait-UntilElementLoaded: Searching on {0} '{1}'" -f $PSCmdlet.ParameterSetName, (iex "`$$($PSCmdlet.ParameterSetName)"))
- switch($PSCmdlet.ParameterSetName) {
- "Id" { $element = Find-SeElement -Driver $Driver -Id $Id }
- "ClassName" { $element = Find-SeElement -Driver $Driver -ClassName $ClassName }
- "Name" { $element = Find-SeElement -Driver $Driver -Name $Name }
- "TagName" { $element = Find-SeElement -Driver $Driver -TagName $TagName }
- "LinkText" { $element = Find-SeElement -Driver $Driver -LinkText $LinkText }
- "XPath" { $element = Find-SeElement -Driver $Driver -XPath $XPath }
- }
- $retry = 0
- Write-Verbose "Wait-UntilElementLoaded: $($retry): [string]::IsNullOrWhiteSpace(`$element.Text) = $([string]::IsNullOrWhiteSpace($element.Text))"
- Write-Verbose "Wait-UntilElementLoaded: $($retry): `$element.Text = $($element.Text)"
- while([string]::IsNullOrWhiteSpace($element.Text) -and $retry -lt $TimeOutSeconds) {
- Start-Sleep 1
- switch($PSCmdlet.ParameterSetName) {
- "Id" { $element = Find-SeElement -Driver $Driver -Id $Id }
- "ClassName" { $element = Find-SeElement -Driver $Driver -ClassName $ClassName }
- "Name" { $element = Find-SeElement -Driver $Driver -Name $Name }
- "TagName" { $element = Find-SeElement -Driver $Driver -TagName $TagName }
- "LinkText" { $element = Find-SeElement -Driver $Driver -LinkText $LinkText }
- "XPath" { $element = Find-SeElement -Driver $Driver -XPath $XPath }
- }
- $retry++
- Write-Verbose "Wait-UntilElementLoaded: $($retry): [string]::IsNullOrWhiteSpace(`$element.Text) = $([string]::IsNullOrWhiteSpace($element.Text))"
- Write-Verbose "Wait-UntilElementLoaded: $($retry): `$element.Text = $($element.Text)"
- }
- if([string]::IsNullOrWhiteSpace($element.Text) -and $retry -eq $TimeOutSeconds) {
- $messageFormat = "Element {0} = '{1}' could not be loaded before the timeout ({2} seconds) ran out. Please ensure the element can load in time."
- $message = $messageFormat -f $PSCmdlet.ParameterSetName, (iex "`$$($PSCmdlet.ParameterSetName)"), $TimeOutSeconds
- throw $message
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement