0

I am trying to create a JInvocation like :-

driver.manage().timeouts().implicitlyWait(10L, (TimeUnit.SECONDS));

This is the block of code that I use to generate the same :-

public static JInvocation implicitWait(JVar driverJVar, Long implicitWaitTime, TimeUnit timeUnit) {
    JClass timeUnitType = (JClass) BasicUtility.getReferenceForClass(TimeUnit.class);
    JExpression jExpression = JExpr.direct(timeUnitType.name().concat(".").concat(timeUnit.name()));
    return driverJVar.invoke("manage").invoke("timeouts").invoke("implicitlyWait").arg(JExpr.lit(implicitWaitTime)).arg(jExpression);
}

This works perfectly, the only problem being that TimeUnit doesn't create an import statement for this. I have to put it manually. Is there any other way to use enums values and pass as arguments?

Simar Singh
  • 415
  • 1
  • 7
  • 14

1 Answers1

0

Found a solution to it. We can do it using the staticRef method of JClass. This would bring the import statement automatically.

JClass timeUnitType = (JClass) CodeModelUtility.getReferenceForClass(TimeUnit.class);
return driverJVar.invoke("manage").invoke("timeouts").invoke("implicitlyWait").arg(JExpr.lit(implicitWaitTime)).arg(timeUnitType.staticRef(timeUnit.name()));
Simar Singh
  • 415
  • 1
  • 7
  • 14