等待selenium中的特定URL

时间:2016-06-01 13:35:42

标签: c# vb.net selenium webautomation chrome-web-driver

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

我在网页上有一个等待“特殊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。相反,我想只在特定URL加载时继续代码。

我该怎么做?

请帮帮我。

2 个答案:

答案 0 :(得分:6)

我不确定你使用的语言是什么,但在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()); };
}

答案 1 :(得分:3)

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

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