我正在用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");
然后继续检查文本是否存在。
答案 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.");