在Selenium中计时的最佳方式

时间:2010-08-25 17:55:41

标签: java testing selenium

我正在用Java编写一些Selenium测试,我主要是尝试使用验证而不是断言,因为我正在检查的东西不是非常依赖,所以如果一个小东西没有我不想中止不行。我想要关注的一件事是某些Drupal页面是否需要永久加载。最好的方法是什么?

我正在使用的模式的小例子。

selenium.open("/m");
selenium.click("link=Android");
selenium.waitForPageToLoad("100000");
if (selenium.isTextPresent("Epocrates")) {
       System.out.println("     Epocrates confirmed");
} else {
       System.out.println("Epocrates failed");
}

我是否应该有两个“waitForPagetoLoad”语句(例如10000和100000),如果在第一个语句之后没有显示所需的文本,则打印一个语句?这看起来很笨拙。我想做的只是像

这样的一行
if (timeToLoad>10000) System.out.println("Epocrates was slow");

然后继续检查文本是否存在。

4 个答案:

答案 0 :(得分:4)

waitForPageToLoad将等到下一页加载完毕。所以你可以做一个开始/结束计时器并做你的if:

long start = System.currentTimeMillis();
selenium.waitForPageToLoad("100000");
long timeToLoad= (System.currentTimeMillis()-start);
if (timeToLoad>10000) System.out.println("Epocrates was slow");

答案 1 :(得分:0)

页面加载后是否加载了文本?我的意思是,文本是动态插入的吗?否则,一旦页面加载,文本就应该出现。

selenium.isTextPresent

不等。它只检查当前可用的页面。

答案 2 :(得分:0)

在Selenium中等待某事的最佳方法如下:

        Reporter.log("Waiting for element '" + locator + "' to appear.");
    new Wait()
    {
        public boolean until()
        {
            return selenium.isElementPresent(locator);
        }
    }.wait("The element '" + locator + "' did not appear  within "
            + timeout + " ms.", timeout);

服务员是硒的一部分,你只需要导入它。

此处还有一个可以使用的框架。它是开源,主要处理所有内容,可以轻松扩展。

https://sourceforge.net/projects/webauthfw/

使用它并给我们信任呵呵。 :)

干杯, 盖尔盖伊。

答案 3 :(得分:0)

Selenium integration test中,我是这样做的,使用纳米时间并转换为双倍来获得秒数:

long endTime = System.nanoTime();
long duration = (endTime - startTime);
Reporter.log("Duration was: " + ((double)duration / 1000000000.0) + " seconds.", true);
assertTrue( duration >=0 || duration <= 1000, "Test that duration of default implicit 
   timeout is less than 1 second, or nearly 0.");