5

我需要在 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 加载时继续代码。

我怎样才能做到这一点?

请帮我。

4

2 回答 2

14

我不确定您使用的是哪种语言,但在 Java 中您可以执行以下操作:

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

等到您的网址加载完毕。

如果由于某种原因您不能使用最新的 selenium 版本,您可以自己实现该方法:

public static Func<IWebDriver, bool> UrlToBe(string url)
{
    return (driver) => { return driver.Url.ToLowerInvariant().Equals(url.ToLowerInvariant()); };
}
于 2016-06-01T13:46:00.113 回答
4

他们现在增加了对预期条件的更多支持。您必须创建一个 webdriver 等待并期望 url 包含一个值

WebDriverWait wait = new WebDriverWait(yourDriver, TimeSpan.FromSeconds(5));
wait.Until(ExpectedConditions.UrlContains("/url-fragment"));
于 2017-08-07T04:49:48.527 回答