代码之家  ›  专栏  ›  技术社区  ›  marc esher

如何让Selenium在运行断言之前等待转换页重定向

  •  19
  • marc esher  · 技术社区  · 15 年前

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

    我想在最后一页上运行断言,而不是过渡页。如何告诉SeleniumIDE在执行断言之前等待最终页面加载?

    谢谢您。

    4 回复  |  直到 6 年前
        1
  •  14
  •   John    15 年前

    一个简单的方法是等待最后一页上的一些“特定”文本,请参阅“wait for text”命令以获取更多信息。

        2
  •  7
  •   josh-cain    9 年前

    为了增加约翰的方法,你可以使用硒 等待 验证最后一页上的元素是否存在的机制如下:

    爪哇:

    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
  •  1
  •   Ben Flynn    13 年前

    你可以连续两次呼叫等待页面。第一个等待重定向,第二个等待最后一页。

        4
  •  0
  •   CIRCLE    6 年前

    您还可以等到页面标题是预期值:

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