How to Check an Element's Existence in Playwright

Better Stack Team
Updated on February 22, 2024

Ensuring an element's presence is a fundamental task in Playwright, crucial for actions like clicking on the element or determining the test outcome based on its existence.

Below are several strategies for this purpose:

🔭 Want to automate and scale your Playwright end-to-end tests?

Head over to Better Stack and start monitoring in 5 minutes.

1. Assessing element visibility

To ascertain an element's visibility, apply the isVisible() method to a locator:

const visible = await page.getByRole('button').isVisible();
if (visible) {
    // do something

For direct visibility assertions, utilize toBeVisible():

await expect(page.getByRole('button')).toBeVisible();

To assert the inverse, that an element is hidden, use the not property:

await expect(page.getByRole('button')).not.toBeVisible();

2. Checking DOM presence

To check if an element is present in the DOM, regardless of its visibility, use the count() method:

const count = await page.getByRole('button').count();
if (count > 1) {
    // do something

For precise assertions on an element's presence, toHaveCount() is recommended:

// Exactly one element matching the locator is present
await expect(page.getByRole('button')).toHaveCount(1);

To verify the absence of an element, proceed as follows:

await expect(page.getByRole('button')).toHaveCount(0);

Thanks for reading, and happy coding!

Make your mark

Join the writer's program

Are you a developer and love writing and sharing your knowledge with the world? Join our guest writing program and get paid for writing amazing technical guides. We'll get them to the right readers that will appreciate them.

Write for us
Writer of the month
Marin Bezhanov
Marin is a software engineer and architect with a broad range of experience working...
Build on top of Better Stack

Write a script, app or project on top of Better Stack and share it with the world. Make a public repository and share it with us at our email.

or submit a pull request and help us build better products for everyone.

See the full list of amazing projects on github