Skip to main content
Version: Next

playwrightClickElements

Index

References

enqueueLinksByClickingElements

Interfaces

EnqueueLinksByClickingElementsOptions

EnqueueLinksByClickingElementsOptions:

optionalclickOptions

clickOptions?: { button?: left | right | middle; clickCount?: number; delay?: number; force?: boolean; modifiers?: (Alt | Control | ControlOrMeta | Meta | Shift)[]; noWaitAfter?: boolean; position?: { x: number; y: number }; strict?: boolean; timeout?: number; trial?: boolean }

Click options for use in Playwright click handler.


Type declaration

  • externaloptionalbutton?: left | right | middle

    Defaults to left.

  • externaloptionalclickCount?: number

    defaults to 1. See [UIEvent.detail].

  • externaloptionaldelay?: number

    Time to wait between mousedown and mouseup in milliseconds. Defaults to 0.

  • externaloptionalforce?: boolean

    Whether to bypass the actionability checks. Defaults to false.

  • externaloptionalmodifiers?: (Alt | Control | ControlOrMeta | Meta | Shift)[]

    Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to "Control" on Windows and Linux and to "Meta" on macOS.

  • externaloptionalnoWaitAfter?: boolean

    Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading. You can opt out of waiting via setting this flag. You would only need this option in the exceptional cases such as navigating to inaccessible pages. Defaults to false.

    Deprecated - This option will default to true in the future.

  • externaloptionalposition?: { x: number; y: number }

    A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of the element.

    • externalx: number
    • externaly: number
  • externaloptionalstrict?: boolean

    When true, the call requires selector to resolve to a single element. If given selector resolves to more than one element, the call throws an exception.

  • externaloptionaltimeout?: number

    Maximum time in milliseconds. Defaults to 0 - no timeout. The default value can be changed via actionTimeout option in the config, or by using the browserContext.setDefaultTimeout(timeout) or page.setDefaultTimeout(timeout) methods.

  • externaloptionaltrial?: boolean

    When set, this method only performs the actionability checks and skips the action. Defaults to false. Useful to wait until the element is ready for the action without performing it. Note that keyboard modifiers will be pressed regardless of trial to allow testing elements which are only visible when those keys are pressed.

optionalexclude

exclude?: readonly UrlPatternInput[]

An array of URL patterns. Matching URLs will not be enqueued.

Accepts glob pattern strings, { glob: string } objects, RegExp instances, or { regexp: RegExp } objects.

Glob matching is always case-insensitive. If you need case-sensitive matching, use a RegExp.

optionalforefront

forefront?: boolean = false

If set to true:

  • while adding the request to the queue: the request will be added to the foremost position in the queue.
  • while reclaiming the request: the request will be placed to the beginning of the queue, so that it's returned in the next call to RequestQueue.fetchNextRequest. By default, it's put to the end of the queue.

optionalinclude

include?: UrlPatternInput[]

An array of URL patterns that URLs must match to be enqueued.

Accepts glob pattern strings, { glob: string } objects, RegExp instances, or { regexp: RegExp } objects.

Glob matching is always case-insensitive. If you need case-sensitive matching, use a RegExp.

If include is an empty array or undefined, then the function enqueues all the intercepted navigation requests produced by the page after clicking on elements matching the provided CSS selector.

optionallabel

label?: string

Sets Request.label for newly enqueued requests.

optionalmaxWaitForPageIdleSecs

maxWaitForPageIdleSecs?: number = 5

This is the maximum period for which the function will keep tracking events, even if more events keep coming. Its purpose is to prevent a deadlock in the page by periodic events, often unrelated to the clicking itself. See waitForPageIdleSecs above for an explanation.

optionalonSkippedRequest

onSkippedRequest?: SkippedRequestCallback

When a request is skipped for some reason, you can use this callback to act on it. This is fired for requests skipped because they don't match enqueueLinks filters or because they were removed by transformRequestFunction.

page

page: Page

Playwright Page object.

requestManager

requestManager: IRequestManager
  • A request manager to which the URLs will be enqueued.

selector

selector: string

A CSS selector matching elements to be clicked on. Unlike in enqueueLinks, there is no default value. This is to prevent suboptimal use of this function by using it too broadly.

optionalskipNavigation

skipNavigation?: boolean = false

If set to true, tells the crawler to skip navigation and process the request directly.

optionaltransformRequestFunction

transformRequestFunction?: RequestTransform

After request options are filtered by include/exclude patterns, this function can be used to remove them or modify their contents such as userData, payload or, most importantly uniqueKey. This is useful when you need to enqueue multiple Requests to the queue that share the same URL, but differ in methods or payloads, or to dynamically update or create userData.

Example:

{
transformRequestFunction: (request) => {
request.userData.foo = 'bar';
return request;
}
}

Note that transformRequestFunction has the highest priority and can overwrite the global label option.

The function receives a RequestOptions object and can return either:

  • The modified RequestOptions object
  • 'unchanged' to keep the original options as-is
  • A falsy value or 'skip' to exclude the request from the queue

optionaluserData

userData?: Dictionary

Sets Request.userData for newly enqueued requests.

optionalwaitForPageIdleSecs

waitForPageIdleSecs?: number = 1

Clicking in the page triggers various asynchronous operations that lead to new URLs being shown by the browser. It could be a simple JavaScript redirect or opening of a new tab in the browser. These events often happen only some time after the actual click. Requests typically take milliseconds while new tabs open in hundreds of milliseconds.

To be able to capture all those events, the enqueueLinksByClickingElements() function repeatedly waits for the waitForPageIdleSecs. By repeatedly we mean that whenever a relevant event is triggered, the timer is restarted. As long as new events keep coming, the function will not return, unless the below maxWaitForPageIdleSecs timeout is reached.

You may want to reduce this for example when you're sure that your clicks do not open new tabs, or increase when you're not getting all the expected URLs.