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

Java 执行操作时捕获时间的Selenium代码,java,datetime,selenium,selenium-webdriver,action,Java,Datetime,Selenium,Selenium Webdriver,Action,我遇到了一个场景,当我点击任何链接/按钮时,我需要捕获时间(秒)。现在我正在抓拍,在做那个动作之前。但有时(10%),当点击链接/按钮的代码被执行时,它将进入下一秒 请查找以下代码: DateFormat dateFormat1 = new SimpleDateFormat("yyyyMMdd_HHmmss"); String dateInFileName=dateFormat1.format(reportGeneratedTimeStamp).toString(); // here its

我遇到了一个场景,当我点击任何链接/按钮时,我需要捕获时间(秒)。现在我正在抓拍,在做那个动作之前。但有时(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%的机会:)有人能帮我解决这个问题吗?

(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

这还不是自动化测试。

用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%准确的,因为它的系统时间和处理时间都以毫秒为单位。

回答不好,对不起。首先,你回答了一个不同的问题。要求的是时间戳,而不是持续时间。为了获得最精确的计时,不要使用
System.currentTimeMillis()
,而是使用
System.nanoTime()
。要获取持续时间,请使用
duration
类。它将为您将时间转换为小时、分钟、秒和秒的分数。对于格式化,只需使用一个长的
String.format()
调用,无需at
StringBuilder