# Query Reference This page provides comprehensive documentation for all query functions in aria-testing. ## Query Variants Each query comes in four variants for different use cases: | Variant | Returns | Not Found | Multiple Found | |------------------|-----------------------|----------------|----------------| | `get_by_*` | Single element | ❌ Raises error | ❌ Raises error | | `query_by_*` | Element or None | ✅ Returns None | ❌ Raises error | | `get_all_by_*` | List of elements | ❌ Raises error | ✅ Returns all | | `query_all_by_*` | List (possibly empty) | ✅ Returns `[]` | ✅ Returns all | ### When to Use Each - **`get_by_*`**: When element MUST exist and be unique (most common in tests) - **`query_by_*`**: When checking if element exists (conditional logic) - **`get_all_by_*`**: When multiple elements MUST exist - **`query_all_by_*`**: When finding zero or more elements (exploratory queries) ## Query by Role ⭐ **Most Recommended** - Find elements by their ARIA role, matching how screen readers interact with your app. ```python from aria_testing import get_by_role, query_by_role, get_all_by_role, query_all_by_role # Find by role button = get_by_role(document, "button") heading = get_by_role(document, "heading", level=1) # Find by role with accessible name link = get_by_role(document, "link", name="Home") # Pattern matching with regex import re link = get_by_role(document, "link", name=re.compile(r"Home|About")) ``` ### Supported Roles #### Landmark Roles Define page structure and navigation: - `banner` - `
` (when not in article/section) - `complementary` - `