package Ġcom . to il atest er . kot af . elements . support Ċ Ċ import Ġcom . to il atest er . kot af . elements . Component Ċ import Ġcom . to il atest er . kot af . elements . factory . create Component Ċ import Ġcom . to il atest er . kot af . elements . invoke Ċ import Ġorg . openqa . selenium . NoSuch ElementException Ċ import Ġorg . openqa . selenium . WebElement Ċ import Ġorg . openqa . selenium . support . page factory . Element Locator Ċ import Ġjava . lang . reflect . Field Ċ import Ġjava . lang . reflect . Invocation Handler Ċ import Ġjava . lang . reflect . Method Ċ Ċ class ĠLoc ating Component Handler ( ĊĠĠĠ Ġprivate Ġval Ġlocator : ĠElement Locator , ĊĠĠĠ Ġprivate Ġval Ġcomponent Type : ĠClass <* >, ĊĠĠĠ Ġprivate Ġval Ġfield : ĠField Ċ ) Ġ: ĠInvocation Handler Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( proxy : ĠAny , Ġmethod : ĠMethod , Ġargs : ĠArray < out ĠAny >? ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelement : ĠWeb Element Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocator . findElement () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch ElementException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" toString " Ġ== Ġmethod . name ) Ġreturn Ġ" Proxy Ġwrappers Ġfor : Ġ$ locator " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException (" No Ġelement Ġmatching Ġlocator Ġ: Ġ$ locator .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(" get Wrapped Element " Ġ== Ġmethod . name ) Ġreturn Ġelement ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( component Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeb Element :: class . java Ġ-> Ġelement . invoke ( method , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Component ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent Type Ġas ĠClass < out ĠComponent >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). invoke ( method , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ