Tables & Lists
Practice extracting data from static, dynamic, and sortable tables.
1. Tables
Challenge Tasks (3)
Tick a task when your script passes it. Tasks with a pass/fail box tick themselves.
Static Table
| ID | Product Name | Price | Status |
|---|---|---|---|
| 1 | Laptop | $999 | In Stock |
| 2 | Smartphone | $699 | Low Stock |
| 3 | Headphones | $199 | Out of Stock |
Sortable Table
| Product Name | Price | Status |
|---|---|---|
| Headphones | $199 | Out of Stock |
| Smartphone | $699 | Low Stock |
| Laptop | $999 | In Stock |
2. Lists
Unordered List
- First item
- Second item
- Third item
Ordered List
- Step one
- Step two
- Step three
3. Pagination
About this Tables & Lists page
A web table is an HTML grid of rows and cells that automated tests read, sort, filter and click inside. To practice, locate rows by their text rather than by index, read cell values by column, and assert after sorting or filtering. This free page gives you a dynamic data grid with tasks you can solve in Playwright, Selenium or Cypress.
Frequently asked questions
How do I get a cell value from a web table in Selenium?
Find the row with a locator such as //tr[td[text()='Alice']], then read the cell with a relative path like ./td[3] and call getText(). Locating the row by content instead of index keeps the test stable when the data order changes.
How do I locate a table row by text in Playwright?
Use page.getByRole('row').filter({ hasText: 'Alice' }) to get the row, then row.getByRole('cell').nth(2) for a column. Playwright re-queries on each action, so the locator survives re-sorting and re-rendering.
How do I test table sorting in automation?
Click the column header, read every value in that column into an array, and compare it with a sorted copy of the same array. Check ascending and descending, and test numbers and dates separately because text sorting orders them differently.
How do I count rows in a dynamic table?
Query the row locator after the data has loaded, for example expect(rows).toHaveCount(10) in Playwright or findElements(By.cssSelector('tbody tr')).size() in Selenium. Wait for a known row or loading indicator first so you do not count a half-rendered table.
Is there a free page to practice web table automation?
Yes. This page is free, needs no signup and runs in the browser. It has a dynamic data grid, a task list with positive and negative cases, a pass or fail result box and hints for each task.
Free developer tools on Randomly.online
QA Playground is part of Randomly.online. These tools help while you write and debug tests: