Selenium代码用于捕获执行操作的时间

时间:2016-09-23 16:16:04

标签: java datetime selenium selenium-webdriver action

当我点击任何链接/按钮时,我遇到了需要捕捉时间(秒数)的场景。现在我正在捕捉,然后再采取行动。但有时候(10%),当点击链接/按钮的代码被执行时,它将进入下一秒。

请在下面找到代码:

DateFormat dateFormat1 = new SimpleDateFormat("yyyyMMdd_HHmmss");
String dateInFileName=dateFormat1.format(reportGeneratedTimeStamp).toString();

 // here its capturing as "20160923_091256"
// code to click on button -- But here time will be "20160923_091257"

所以我想得到时间,确切的行动已经完成,也不想占用10%的机会:)任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

(1)因为Seleninum WebDriver尝试模拟人类行为,导致延迟时间

(2)您的预期时间增加了1秒,概率 10%,90%它正常工作。

(1),(2)=>没有解决方案,或者您从Java程序中获得时间:

DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
Date date = new Date();
System.out.println(dateFormat.format(date)); //20160923_091256

它还没有自动化测试。

答案 1 :(得分:-1)

在java中测试时间的最准确方法是:

Long start = System.currentTimeMillis();

 // do some action //

Long end = System.currentTimeMillis();

并且使用此方法获得实际持续时间:

public String getDuration(long millis) {
    // long days = TimeUnit.MILLISECONDS.toDays(millis);
    // millis -= TimeUnit.DAYS.toMillis(days);

    millis = Math.abs(millis);

    long hours = TimeUnit.MILLISECONDS.toHours(millis);
    millis -= TimeUnit.HOURS.toMillis(hours);

    long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
    millis -= TimeUnit.MINUTES.toMillis(minutes);

    long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);
    millis -= TimeUnit.SECONDS.toMillis(seconds);

    StringBuilder sb = new StringBuilder(64);
    sb.append(String.format("%02d", hours));
    sb.append(":");
    sb.append(String.format("%02d", minutes));
    sb.append(":");
    sb.append(String.format("%02d", seconds));
    sb.append(".");
    sb.append(String.format("%02d", millis));
    return (sb.toString());
}

并以字符串

获得一些持续时间
System.out.println(getDuration(end-start));

这实际上是100%准确的,因为它的系统时间和处理时间以毫秒为单位。