【问题标题】:How to get Selenium to wait for a transition page to redirect before running an assertion如何让 Selenium 在运行断言之前等待转换页面重定向
【发布时间】:2010-01-06 15:53:14
【问题描述】:

我有一个相当标准的情况:单击一个按钮,它会加载一个带有进度条或其他内容的转换页面,然后该页面重定向到下一页,这需要一段时间才能加载。

我想在最后一页而不是过渡页上运行断言。如何告诉 Selenium IDE 在执行断言之前等到最后一页加载?

谢谢。

【问题讨论】:

    标签: selenium selenium-ide


    【解决方案1】:

    一种简单的方法是在最后一页上等待一些“特定”文本,有关详细信息,请参阅“waitForText”命令

    【讨论】:

    • 甜蜜。我做的一件事是在 waitForText 之前添加一个 setTimeout target=XXXX(以毫秒为单位)命令,这减少了它在未满足断言时等待的时间。非常感谢,约翰。
    • 你也可以使用 waitForLocation 并给它 url。
    • waitForLocation 怎么样?
    • new WebDriverWait(driver, 20).Until(ExpectedConditions.UrlToBe("my-url"))
    • driver.wait(until.urlContains("part_of_expected_URL")) 或 driver.wait(until.urlIs("expected_URL"))
    【解决方案2】:

    要添加到 John 的方法,您可以使用 Selenium wait 机制来验证最终页面上的元素是否存在,如下所示:

    Java:

    WebDriverWait wait = new WebDriverWait(webDriver, 10); // seconds
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("foo")));
    

    鲁比:

    wait = Selenium::WebDriver::Wait.new(timeout: 10) # seconds
    wait.until { driver.find_element(id: "foo") }
    

    这将正确地遵循所涉及的任何重定向。

    来自https://code.google.com/p/selenium/wiki/RubyBindings的示例

    【讨论】:

      【解决方案3】:

      您可以连续调用两次 wait_for_page。第一个等待重定向,第二个等待最终页面。

      【讨论】:

        【解决方案4】:

        您也可以等到页面标题为预期值:

        $driver->wait()->until(WebDriverExpectedCondition::titleIs('New page title from redirect'));
        

        【讨论】:

          猜你喜欢
          • 2021-05-10
          • 2011-09-21
          • 2017-02-21
          • 2017-09-18
          • 2017-11-28
          • 1970-01-01
          • 1970-01-01
          • 2017-02-02
          • 2016-06-16
          相关资源
          最近更新 更多