How to Click, Type, and Hover with Playwright
Users normally access most website functionality through clicks, keystrokes etc. Playwright allows us to replicate these events by referencing elements on the page using User-first Selectors.
Clicking
Clicking is the default way of selecting and activating elements on web pages, and will appear very often in most headless scripts.
For the times when even the humble click fails, you can try the following alternatives:
await page.click('#login', { force: true })
to force the click even if the selected element appears not to be accessibleawait page.$eval('#login', elem => elem.click())
to run the click inside the webpageawait page.dispatchEvent('#login', 'click')
to directly dispatch the click event on the element
Hovering
A popular pattern among web pages is exposing additional information or functionality when the user hovers the mouse cursor over a specific item. Examples include, menus, previews and dialogs containing extra information on the item.
Note that in this example we’re not asserting anything, since our web example doesn’t do any element updates on hover.
Focussing
Focussing on specific UI elements allows the user to interact with them without clicks. It can also result in a proactive reaction from the webapp, such as displaying suggestions.
Typing
We can simulate typing on a real keyboard using page.type()
:
Single key presses can also be executed. For example, to press the Enter key:
- Playwright:
await page.press('Enter')
Key presses can also be sent to a specific element:
await (await page.$('input[type="text"]')).press('Enter')
We can also hold down and release one or more keys, possibly combining them to use keyboard shortcuts:
You can run (from the terminal) the above examples as follows:
Further reading
- The related official documentation of Playwright
- Finding effective selectors