在Python和Java的Selenium中,可以等待URL更改为特定值。铁锈箱子
thirtyfour
里有类似的功能吗?
Java 示例:
new WebDriverWait(driver, 20).Until(ExpectedConditions.UrlToBe("my-url"));
现在,我已经编写了这个等待函数:
use tokio::time;
use tokio::time::{Duration, Instant};
use anyhow::{bail, Context, Result};
use thirtyfour::{prelude::*, Key};
async fn wait_for_url(driver: &WebDriver, url: &str, timeout: &Duration) -> Result<()> {
let start = Instant::now();
loop {
time::sleep(Duration::from_millis(500)).await;
let current_url = driver.current_url().await?;
if current_url.as_str() == url {
return Ok(());
}
if &(time::Instant::now() - start) > timeout {
bail!("Timeout waiting for {url}. Current url is {current_url}");
}
}
}
我在
thirtyfour
中找不到一个函数可以实现你想要的功能,而你所做的基本上就是 Python 版本在幕后所做的事情(即使具有相同的轮询时间),所以我认为这就是你应该做的。