ddp_utils.browser.facade.collections¶
import ddp_utils.browser.facade.collections
Ordered backend-neutral browser element collections.
- class ddp_utils.browser.facade.collections.BrowserCollection(items: Sequence[BrowserElement] = ())¶
Bases:
Sequence[BrowserElement]Provide stable sequence and bulk operations for matched elements.
Parameters
Name
Type
Description
items
Sequence[BrowserElement]
Ordered browser elements.
Examples
Iterate search results without backend-specific collection objects:
for row in browser.find_all("tr", attrs={"data-result": True}): print(row.text)
Freeze one ordered element snapshot.
Parameters
Name
Type
Description
items
Sequence[BrowserElement]
Elements in backend-observed document order.
Examples
Wrap adapter results:
collection = BrowserCollection(elements)
- property first: BrowserElement | None¶
Return the first element when present.
Returns
First element or
Nonefor an empty collection.Examples
Use an optional first match:
first = rows.first
- property last: BrowserElement | None¶
Return the last element when present.
Returns
Last element or
Nonefor an empty collection.Examples
Inspect the final result:
last = rows.last
- count() int¶
Return the number of elements.
Returns
Type
Description
int
Element count.
Examples
assert rows.count() == 10.
- nth(index: int) BrowserElement¶
Return one element by Python index.
Parameters
Name
Type
Description
index
int
Positive or negative index.
Returns
Type
Description
Selected element.
Examples
third = rows.nth(2).
- all() list[BrowserElement]¶
Return a mutable list snapshot.
Returns
Type
Description
list[BrowserElement]
Elements in document order.
Examples
items = rows.all().
- texts() list[str]¶
Return visible text for every element.
Returns
Type
Description
list[str]
Text values in collection order.
Examples
Compare all option labels:
assert "Fulton" in options.texts()
- values() list[Any]¶
Return live values for every element.
Returns
Type
Description
list[Any]
Values in collection order.
Examples
submitted = fields.values().
- filter(*, text: Any = None, attrs: dict[str, Any] | None = None, **conditions: Any) BrowserCollection¶
Return elements satisfying structured local criteria.
Parameters
Name
Type
Description
text
Any
Optional visible-text criterion.
attrs
dict[str, Any] | None
Optional attribute criteria.
**conditions
Any
Match mode, case policy, state, or
predicate.Returns
Type
Description
New ordered collection containing accepted elements.
Raises
Exception
Description
If unsupported filter conditions are passed.
Examples
Keep visible rows only:
visible = rows.filter(condition="visible")
- has(query: Any) BrowserCollection¶
Keep elements containing a matching descendant.
Parameters
Name
Type
Description
query
Any
CSS selector, structured mapping, or callback.
Returns
Type
Description
Filtered collection.
Raises
Exception
Description
If
queryis not a selector, mapping or callback.Examples
cards_with_links = cards.has("a.details").
- has_not(query: Any) BrowserCollection¶
Keep elements without a matching descendant.
Parameters
Name
Type
Description
query
Any
CSS selector, structured mapping, or callback.
Returns
Type
Description
Filtered collection.
Examples
empty_cards = cards.has_not("a.details").
- slice(start: int | None = None, stop: int | None = None, step: int | None = None) BrowserCollection¶
Return a sliced collection.
Parameters
Name
Type
Description
start
int | None
Inclusive start index.
stop
int | None
Exclusive stop index.
step
int | None
Slice step.
Returns
Type
Description
New collection.
Examples
page = rows.slice(0, 10).
- unique(*, by: str = 'identity') BrowserCollection¶
Remove duplicates while preserving order.
Parameters
Name
Type
Description
by
str
identity,text,value, or attribute name.Returns
Type
Description
Deduplicated collection.
Examples
unique_links = links.unique(by="href").
- map(callback: Callable[[BrowserElement], Any]) list[Any]¶
Map a callback over elements.
Parameters
Name
Type
Description
callback
Callable[[BrowserElement], Any]
Element transformation.
Returns
Type
Description
list[Any]
Callback results.
Examples
ids = rows.map(lambda row: row.get("id")).
- for_each(callback: Callable[[BrowserElement], Any]) BrowserCollection¶
Invoke a callback for every element.
Parameters
Name
Type
Description
callback
Callable[[BrowserElement], Any]
Element consumer.
Returns
Type
Description
This collection.
Examples
rows.for_each(lambda row: row.highlight()).
- click(*, required: bool = True) CollectionActionResult[BrowserElement]¶
Click every element in order.
Parameters
Name
Type
Description
required
bool
Raise on the first failure when true.
Returns
Type
Description
Ordered per-element action results.
Examples
Expand every visible disclosure control:
result = buttons.click(required=False)
- show(*, timeout: float | None = None, stop_on_error: bool = True) CollectionActionResult[BrowserElement]¶
Restore every facade-hidden element.
Parameters
Name
Type
Description
timeout
float | None
Optional per-element verification deadline.
stop_on_error
bool
Stop after the first failed element.
Returns
Type
Description
Ordered per-element action results.
Examples
Restore a group of elements:
results.show()
- hide(*, timeout: float | None = None, stop_on_error: bool = True) CollectionActionResult[BrowserElement]¶
Hide every element and verify each result.
Parameters
Name
Type
Description
timeout
float | None
Optional per-element verification deadline.
stop_on_error
bool
Stop after the first failed element.
Returns
Type
Description
Ordered per-element action results.
Examples
Hide multiple overlays:
overlays.hide(stop_on_error=False)
- attributes(name: str) list[str | None]¶
Return one attribute for every element.
Parameters
Name
Type
Description
name
str
Attribute name.
Returns
Type
Description
list[str | None]
Attribute values in collection order.
Examples
Read every result URL:
urls = links.attributes("href")
- click_each(*, timeout: float | None = None, stop_on_error: bool = True) CollectionActionResult[BrowserElement]¶
Click every element in order.
Parameters
Name
Type
Description
timeout
float | None
Per-element timeout.
stop_on_error
bool
Stop after the first failure.
Returns
Type
Description
Ordered action results.
Examples
result = buttons.click_each(stop_on_error=False).
- fill_each(values: Any, *, timeout: float | None = None) CollectionActionResult[BrowserElement]¶
Fill every element from scalar or per-element values.
Parameters
Name
Type
Description
values
Any
Scalar value or sequence matching collection length.
timeout
float | None
Per-element timeout.
Returns
Type
Description
Ordered action results.
Raises
Exception
Description
If the number of values differs from the length of the collection.
Examples
result = fields.fill_each(["John", "Smith"]).
- wait(*, timeout: float, minimum: int | None = None, maximum: int | None = None, count: int | None = None, **conditions: Any) BrowserCollection¶
Wait until current elements satisfy state and cardinality constraints.
Parameters
Name
Type
Description
timeout
float
Deadline in seconds.
minimum
int | None
Optional minimum count.
maximum
int | None
Optional maximum count.
count
int | None
Optional exact count.
**conditions
Any
Element boolean property expectations.
Returns
Type
Description
Accepted collection.
Raises
Exception
Description
If the collection snapshot is empty: an empty snapshot cannot acquire new elements, so the query has to be repeated.
Examples
ready = rows.wait(timeout=10, minimum=1, visible=True).
- property native: tuple[Any, ...]¶
Return provider-native elements.
Returns
Native elements in collection order.
Examples
native = rows.native.
- native_items() tuple[Any, ...]¶
Return explicit native element escape hatches.
Returns
Type
Description
tuple[Any, …]
Native elements in collection order.
Examples
Use a provider-only bulk operation intentionally:
native = collection.native_items()