【问题标题】:Wait for a particular URL in selenium在 selenium 中等待特定的 URL
【发布时间】:2016-09-30 22:04:10
【问题描述】:

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

我该怎么做?

请帮帮我。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我正在使用 vb.net,c# 也适合我。
    • 我编辑了我对 C# 变体的回答。可能不完全正确,因为我目前没有安装 VS。
    • 我没有发现你的答案有什么不同。另外我收到一个错误“urlToBe”不是“OpenQA.Selenium.Support.UI.ExpectedConditions”的成员
    • 根据 selenium git 的历史,这个预期的条件是在 selenium 2.53.0 中添加的,所以如果你没有使用最新版本,你还不能使用它。见:github.com/SeleniumHQ/selenium/blob/master/dotnet/src/support/…
    • 谢谢,我有低版本的 selenium 并升级它现在 UrlToBe 工作。我还有一个问题,是否可以等到用户点击我网页中的某个按钮?
    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2020-05-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多