Skip to main content

Locator Level Timeouts

Since v2.19.0

Gwen supports specifying locator level timeouts for overriding the default timeout gwen.web.locator.wait.seconds. This is useful for cases where you may want to increase the locator timeout period for some web elements without impacting others. A web element that takes a long time to load for example can have a higher locator timeout without slowing down the rest of your locators.

Timeout Annotations

Since v2.73.0

Syntax

@Timeout('<duration>')

Where:

  • <duration> can be any of:
    • #h#m#s#ms for a number of hours, minutes, seconds and milliseconds - example: @Timeout('1h2m30s100ms')
    • #h#m#s for a number of hours, minutes and seconds - example: @Timeout('1h2m30s')
    • #h#m#ms for a number of hours, minutes and milliseconds - example: @Timeout('1h2m100ms')
    • #h#ms for a number of hours and milliseconds - example: @Timeout('1h100ms')
    • #h for a number of hours - example: @Timeout('1h')
    • #m#s#ms for a number of minutes, seconds and milliseconds - example: @Timeout('2m30s100ms')
    • #m#s for a number of minutes and seconds - example: @Timeout('2m30s')
    • #m#ms for a number of minutes and milliseconds - example: @Timeout('2m100ms')
    • #m for a number of minutes - example: @Timeout('2m')
    • #s#ms for a number of seconds and milliseconds - example: @Timeout('30s100ms')
    • #s for a number of seconds - example: @Timeout('30s')
    • #ms for a number of milliseconds - example: @Timeout('100ms')
    • 0h for no timeout period - example: @Timeout('0h')
    • 0m for no timeout period - example: @Timeout('0m')
    • 0s for no timeout period - example: @Timeout('0s')
    • 0ms for no timeout period - example: @Timeout('0ms')

The timeout annotation can be used used on various wait, until/while, for each, assertion or locator steps.

Delay Annotation

The same duration patterns also apply to @Delay annotations used to control the delay time between repeated operations in the various wait, until/while loops.

Examples

  # will cause lookup to fail immediately if username is not present on the page
And @Timeout('0s') the username can be located by id "username"

# will cause lookup to fail if the username is not available on the page after waiting 20 seconds
And @Timeout('20s') the username can be located by id "username"

# will cause lookup to fail if the username is not available on the page after waiting 1 minute and 30 seconds
And @Timeout('1m30s') the username can be located by id "username"

DSL Approach

Deprecated

Deprecated since v3.73.0 and will be dropped in next major Gwen 4 release.

Instead use above annotation approach.

  # will cause lookup to fail immediately if username is not present on the page
And the username can be located by id "username" with no wait

# will cause lookup to fail if the username is not available on the page after waiting 20 seconds
And the username can be located by id "username" with 20 second timeout