提问人:IT researcher 提问时间:6/1/2016 最后编辑:Samuel Rondeau-MillaireIT researcher 更新时间:8/7/2017 访问量:28379
等待 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 时继续代码。
我该怎么做?
请帮帮我。
答:
17赞
Mobrockers
6/1/2016
#1
我不确定你使用的是什么语言,但在 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()); };
}
评论
0赞
IT researcher
6/1/2016
我正在使用 vb.net,c# 对我来说也没问题。
0赞
Mobrockers
6/1/2016
我编辑了对 C# 变体的回答。可能不完全正确,因为我目前没有安装 VS。
0赞
IT researcher
6/1/2016
我没有发现你的答案有什么不同。此外,我收到错误“urlToBe”不是“OpenQA.Selenium.Support.UI.ExpectedConditions”的成员
1赞
Mobrockers
6/1/2016
根据 selenium git 历史记录,该预期条件是在 selenium 2.53.0 中添加的,因此如果您不使用最新版本,则还不能使用它。请参见:github.com/SeleniumHQ/selenium/blob/master/dotnet/src/support/...
0赞
IT researcher
6/2/2016
谢谢,我有较低版本的硒,现在升级了 UrlToBe 工作。我还有一个问题,是否可以等到用户点击我的网页中的某些按钮?
5赞
Kieran
8/7/2017
#2
他们现在为预期条件增加了更多支持。您必须创建一个 webdriver 等待并期望 url 包含一个值
WebDriverWait wait = new WebDriverWait(yourDriver, TimeSpan.FromSeconds(5));
wait.Until(ExpectedConditions.UrlContains("/url-fragment"));
评论
0赞
Jason D
2/9/2022
请务必添加 Nuget 包:DotNetSeleniumExtras.WaitHelpers。stackoverflow.com/a/49867605/10787774
评论