等待 selenium 中的特定 URL

Wait for a particular URL in selenium

我需要在 Chrome 浏览器中使用 Selenium 在网站自动化中等待特定的 URL。 用户将在我们的网站上进行在线支付。我们的网站用户被重定向到支付网关。当用户完成付款后,网关将重定向到我们的网站。我想收到从网关到我们网站的重定向通知。

我得到了一个在网页中等待“特定ID”的例子,这里是vb.net代码

driver.Url = "http://gmail.com"
   Dim wait As New WebDriverWait(driver, TimeSpan.FromSeconds(10))
                wait.Until(Of IWebElement)(Function(d) d.FindElement(By.Id("next")))

这会导航到“gmail.com”并等待该页面上的 ID“next”。相反,我只想在特定 URL 加载时继续执行代码。

我该怎么做?

请帮助我。

我不确定你使用的是什么语言,但在 Java 中你可以这样做:

new WebDriverWait(driver, 20).Until(ExpectedConditions.UrlToBe("my-url"));

等待您的 url 加载。

如果因为某些原因不能使用最新的selenium版本,可以自己实现方法:

public static Func<IWebDriver, bool> UrlToBe(string url)
{
    return (driver) => { return driver.Url.ToLowerInvariant().Equals(url.ToLowerInvariant()); };
}

他们现在增加了对预期条件的更多支持。您将不得不创建一个 webdriver wait 并期望 url 包含一个值

WebDriverWait wait = new WebDriverWait(yourDriver, TimeSpan.FromSeconds(5));
wait.Until(ExpectedConditions.UrlContains("/url-fragment"));