Selenium-IDE:如何验证/断言页面刷新

时间:2013-09-05 13:02:55

标签: selenium selenium-ide

我在页面上有一个链接,点击后会刷新此页面。

如何通过Selenium-IDE验证页面是否已真正刷新/重新加载?

4 个答案:

答案 0 :(得分:3)

我已经通过声明页面上最初存在的元素在刷新后没有出现在页面上来解决它,然后等待直到页面完全刷新,并断言元素再次出现。< / p>

  1. refreshAndWait /或点击刷新链接/按钮上的等待
  2. assertElementNotPresent somePageSpecificElement /检查刷新是否真正执行
  3. 暂停 2000毫秒 /等待刷新结束
  4. assertElementPresent somePageSpecificElement /检查确实已执行刷新并且已加载相同的页面
  5. <强>更新 如果存在一些文本框元素,也可以轻松验证页面刷新。只需使用 type 命令将一些文本插入文本框字段,然后刷新页面,文本框内的文本应返回其原始状态。

答案 1 :(得分:2)

简单的方法是等到页面上的最后一个元素。

在Selenium-IDE中,您可以使用大量的wait *命令来执行此操作,例如:

waitForElementPresent [element_xPath]

waitForVisible [element_xPath]

等等。

答案 2 :(得分:1)

如果像我一样,你发现检查元素的可见性和隐形性是不可靠的,那么还有另一种选择。

如果您的网站使用jQuery,我发现最可靠的方法是检查jQuery.active的状态以确定页面刷新。

例如,在C#中我使用以下方法:

public bool CheckPageHasRefreshed()
    {
        try
        {
            // Wait for jQuery to become active (the page is refreshing)
            wait.Until(x => (((IJavaScriptExecutor)WebDriver).ExecuteScript("return jQuery.active != 0")));
            // Wait for jQuery to become inactive (the page refresh has completed)
            wait.Until(x => (((IJavaScriptExecutor)WebDriver).ExecuteScript("return jQuery.active === 0")));
            return true;
        }
        catch (WebDriverTimeoutException)
        {
            return false;
        }
    }

这是有效的,因为当页面上的所有后端加载活动都已完成时,jQuery.active将仅返回0。如果事情仍然在幕后发生,那就不会。

答案 3 :(得分:0)

您可以假设 - 如果找到元素,并且已调用element.click(),则单击该元素。

但是对于良好实践 - 如果在DOM中找不到该元素,则应该捕获异常。 I.E如果它进入catch块,那么你知道页面还没有刷新。

try{
    WebElement element = driver.findElement(selector); //The refresh link user clicks
    element.click();
    clicked = true;
}catch(Exception e){
    clicked = false;
    throw new ElementNotFoundException();
}