Waiting For Element Changes
Sometimes you already have a reference to an element, but you want to perform an action that
might change the element in some way. One way to do this would be to call WebDriver::query()
and poll for the element with its new attributes. But it might be challenging to get the right
query, and the query might return a different element that already has the attribute you specified.
If you already have a reference to the element, why not use that to poll for the changes you expect?
The thirtyfour
crate provides a way to wait for virtually any desired change on an existing element.
It's called ElementWaiter
.
ElementWaiter
The WebElement::wait_until()
method returns an ElementWaiter
struct.
Using ElementWaiter
you can do things like this:
#![allow(unused)] fn main() { elem.wait_until().displayed().await?; // You can optionally provide a nicer error message like this. elem.wait_until().error("Timed out waiting for element to disappear").not_displayed().await?; elem.wait_until().enabled().await?; elem.wait_until().clickable().await?; }
And so on. See the ElementWaiter docs for more details.