import Ġio . app ium . java _ client . android . Android Driver Ċ import Ġio . app ium . java _ client . ios . IO SD river Ċ import Ġio . app ium . java _ client . remote . Mobile Capability Type Ċ import Ġio . app ium . java _ client . service . local . App ium Driver Local Service Ċ import Ġio . app ium . java _ client . service . local . App ium Service Builder Ċ import Ġorg . openqa . selenium . WebElement Ċ import Ġorg . openqa . selenium . remote . Desired Capabilities Ċ import Ġjava . io . File Ċ Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ object ĠApp ium Driver Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġapp ium Service : ĠApp ium Driver Local Service ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġandroid Driver : ĠAndroid Driver < WebElement >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġios Driver : ĠIOS Driver < WebElement >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġget App ium Service (): ĠApp ium Driver Local Service Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( app ium Service Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbind Ġremote Ġor Ġcreate Ġlocal Ġserver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp ium Service Ġ= ĠApp ium Driver Local Service . build Service ( App ium Service Builder (). with IPAddress (" 1 2 7 . 0 . 0 . 1 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! app ium Service !!. isRunning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp ium Service !!. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġapp ium Service !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Android Driver (): ĠAndroid Driver < WebElement > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( android Driver Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclasspath Root Ġ= ĠFile ( System . getProperty (" user . dir ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Dir Ġ= ĠFile ( classpath Root , Ġ"../ apps ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠFile ( app Dir . canonical Path , Ġ" Api Dem os - debug . apk ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcapabilities Ġ= Ġget Android Capabilities ( app . absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Driver Ġ= ĠAndroid Driver < WebElement >( getApp ium Service (). url , Ġcapabilities ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanage (). timeout s (). implicit ly Wait ( 2 5 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġandroid Driver !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget I os Driver (): ĠIOS Driver < WebElement > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ios Driver Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclasspath Root Ġ= ĠFile ( System . getProperty (" user . dir ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Dir Ġ= ĠFile ( classpath Root , Ġ"../ apps ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠFile ( app Dir . canonical Path , Ġ" Test App . app . zip ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcapabilities Ġ= Ġget I os Capabilities ( app . absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġios Driver Ġ= ĠIOS Driver < WebElement >( getApp ium Service (). url , Ġcapabilities ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanage (). timeout s (). implicit ly Wait ( 2 5 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġios Driver !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Android Driver Exists () Ġ= Ġthis . android Driver Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġis I os Driver Exists () Ġ= Ġthis . ios Driver Ġ!= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġget Android Capabilities ( absolute Path : ĠString ): ĠDes ired Capabilities Ġ= ĠDes ired Capabilities (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Capability ( Mobile Capability Type . DEVICE _ NAME , Ġ" Android ") ĊĠĠĠĠĠĠĠ Ġset Capability ( Mobile Capability Type . PLATFORM _ NAME , Ġ" Android ") ĊĠĠĠĠĠĠĠ Ġset Capability (" app ", Ġabsolute Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget I os Capabilities ( absolute Path : ĠString ): ĠDes ired Capabilities Ġ= ĠDes ired Capabilities (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Capability ( Mobile Capability Type . PLATFORM _ NAME , Ġ" iOS ") ĊĠĠĠĠĠĠĠ Ġset Capability (" automation Name ", Ġ" X CU ITest ") ĊĠĠĠĠĠĠĠ Ġset Capability (" device Name ", Ġ" iPhone Ġ 1 2 ĠPro ĠMax ") ĊĠĠĠĠĠĠĠ Ġset Capability (" app ", Ġabsolute Path ) ĊĠĠĠ Ġ} Ċ } Ċ