我需要在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加载时继续代码。
我该怎么做?
请帮帮我。
答案 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"));