package Ġselenium . actions . element Ċ Ċ import Ġcom . tester um _ api . tester um _ steps _ api . annotations . steps . Param Ċ import Ġcom . tester um _ api . tester um _ steps _ api . annotations . steps . When Ċ import Ġcom . tester um _ api . tester um _ steps _ api . services . Tester um Service Locator Ċ import Ġorg . openqa . selenium . WebElement Ċ import Ġorg . openqa . selenium . inter actions . Actions Ċ import Ġselenium _ steps _ support . service . descriptions . Sel enium Shared Descriptions Ċ import Ġselenium _ steps _ support . service . elem _ loc ators . Element Locator Service Ċ import Ġselenium _ steps _ support . service . module _ di . Sel enium Module Service Locator Ċ import Ġselenium _ steps _ support . service . webdriver _ manager . WebDriver Manager ĊĊ Ċ class ĠWebDriver Interaction Steps Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠTest er um Service Locator . get Tester um Logger () ĊĊĠĠĠ Ġprivate Ġval Ġweb Driver Manager : ĠWebDriver Manager Ġ= ĠSelen ium Module Service Locator . bootstrap per . selenium Module Factory . web Driver Manager ĊĊĠĠĠ Ġ@ When ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" I Ġclick Ġthe Ġelement Ġ<< element Locator >> ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Sim ulates Ġa Ġmouse Ġclick Ġon Ġthe Ġgiven Ġelement ." ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġclick ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Param ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠSelen ium Shared Descriptions . ELEMENT _ LOC ATOR _ DESCRIPTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Locator : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" click ing \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" -------- \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" element Locator Ġ: Ġ$ element Locator \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġweb Driver Manager . waitFor Element Present ( element Locator ) ĊĠĠĠĠĠĠĠ Ġweb Driver Manager . scrollTo Element ( element Locator ) ĊĠĠĠĠĠĠĠ Ġweb Driver Manager . execute WebDriver Step Ġ{ Ġdriver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement : ĠWeb Element Ġ= ĠElement Locator Service . locate Element ( driver , Ġelement Locator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠAssertionError (" the Ġelement Ġ[$ element Locator ] Ġshould Ġbe Ġpresent Ġon Ġthe Ġpage , Ġbut Ġis Ġnot ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠActions ( driver ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. moveTo Element ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ //---------------------------------------------------------------- ------------------------------------------------ ------ ĊĠĠĠ Ġ@ When ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" I Ġclick Ġthe Ġelement Ġ<< element Locator >> Ġat Ġ<< position >> ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Click s Ġat Ġthe Ġspecified Ġposition Ġ( X , ĠY ) Ġon Ġa Ġtarget Ġelement Ġ( e . g ., Ġa Ġlink , Ġbutton , Ġcheckbox , Ġor Ġradio Ġbutton ).\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġcoordinates Ġare Ġrelative Ġto Ġthe Ġtarget Ġelement Ġ( e . g ., Ġ 0 , 0 Ġis Ġthe Ġtop Ġleft Ġcorner Ġof Ġthe Ġelement )." ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġclick At ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Param ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠSelen ium Shared Descriptions . ELEMENT _ LOC ATOR _ DESCRIPTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Locator : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Param ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Specifies Ġthe Ġx , y Ġposition Ġ( i . e . Ġ- Ġ 1 0 , 2 0 ) Ġof Ġthe Ġmouse Ġevent Ġrelative Ġto Ġthe Ġelement Ġreturned Ġby Ġthe Ġlocator ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" click ing Ġat Ġposition \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" -------------------- \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" element Locator Ġ: Ġ$ element Locator \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" position Ġ: Ġ$ position \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġsplit Ġ= Ġposition . split (",") ĊĠĠĠ Ġif ( split . size Ġ!= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" the Ġposition Ġparameter Ġ[$ position ] Ġis Ġnot Ġa Ġvalid . ĠThe Ġparameter Ġformat Ġshould Ġbe Ġtwo Ġnumbers Ġseparated Ġby Ġcomma . Ġ( i . e . Ġ- Ġ 1 0 , 2 0 )") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġx Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġsplit [ 0 ]. toInt () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" the Ġposition Ġparameter Ġ[$ position ] Ġis Ġnot Ġa Ġvalid . ĠThe Ġparameter Ġformat Ġshould Ġbe Ġtwo Ġnumbers Ġseparated Ġby Ġcomma . Ġ( i . e . Ġ- Ġ 1 0 , 2 0 )") ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġy Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġsplit [ 1 ]. toInt () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" the Ġposition Ġparameter Ġ[$ position ] Ġis Ġnot Ġa Ġvalid . ĠThe Ġparameter Ġformat Ġshould Ġbe Ġtwo Ġnumbers Ġseparated Ġby Ġcomma . Ġ( i . e . Ġ- Ġ 1 0 , 2 0 )") ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġweb Driver Manager . waitFor Element Present ( element Locator ) ĊĠĠĠĠĠĠĠ Ġweb Driver Manager . scrollTo Element ( element Locator ) ĊĠĠĠĠĠĠĠ Ġweb Driver Manager . execute WebDriver Step Ġ{ Ġdriver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement : ĠWeb Element Ġ= ĠElement Locator Service . locate Element ( driver , Ġelement Locator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠAssertionError (" the Ġelement Ġ[$ element Locator ] Ġshould Ġbe Ġpresent Ġon Ġthe Ġpage , Ġbut Ġis Ġnot ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠActions ( driver ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. moveTo Element ( element , Ġx , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ //---------------------------------------------------------------- ------------------------------------------------ ------ ĊĠĠĠ Ġ@ When ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" I Ġdouble - click Ġthe Ġelement Ġ<< element Locator >> ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Sim ulates Ġa Ġmouse Ġdouble - click Ġon Ġthe Ġgiven Ġelement ." ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġdouble Click ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Param ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠSelen ium Shared Descriptions . ELEMENT _ LOC ATOR _ DESCRIPTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Locator : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" double Ġclicking \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" --------------- \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" element Locator Ġ: Ġ$ element Locator \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġweb Driver Manager . waitFor Element Present ( element Locator ) ĊĠĠĠĠĠĠĠ Ġweb Driver Manager . scrollTo Element ( element Locator ) ĊĠĠĠĠĠĠĠ Ġweb Driver Manager . execute WebDriver Step Ġ{ Ġdriver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement : ĠWeb Element Ġ= ĠElement Locator Service . locate Element ( driver , Ġelement Locator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠAssertionError (" the Ġelement Ġ[$ element Locator ] Ġshould Ġbe Ġpresent Ġon Ġthe Ġpage , Ġbut Ġis Ġnot ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠActions ( driver ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. moveTo Element ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. double Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ //---------------------------------------------------------------- ------------------------------------------------ ------ ĊĠĠĠ Ġ@ When ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" I Ġdouble - click Ġthe Ġelement Ġ<< element Locator >> Ġat Ġ<< position >> ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Double = click s Ġat Ġthe Ġspecified Ġposition Ġ( X , ĠY ) Ġon Ġa Ġtarget Ġelement Ġ( e . g ., Ġa Ġlink , Ġbutton , Ġcheckbox , Ġor Ġradio Ġbutton ).\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġcoordinates Ġare Ġrelative Ġto Ġthe Ġtarget Ġelement Ġ( e . g ., Ġ 0 , 0 Ġis Ġthe Ġtop Ġleft Ġcorner Ġof Ġthe Ġelement )." ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġdouble Click ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Param ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠSelen ium Shared Descriptions . ELEMENT _ LOC ATOR _ DESCRIPTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Locator : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Param ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Specifies Ġthe Ġx , y Ġposition Ġ( i . e . Ġ- Ġ 1 0 , 2 0 ) Ġof Ġthe Ġmouse Ġevent Ġrelative Ġto Ġthe Ġelement Ġreturned Ġby Ġthe Ġlocator ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" double Ġclicking Ġat Ġposition \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ---------------- ----------- \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" element Locator Ġ: Ġ$ element Locator \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" position Ġ: Ġ$ position \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsplit Ġ= Ġposition . split (",") ĊĠĠĠĠĠĠĠ Ġif ( split . size Ġ!= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" the Ġposition Ġparameter Ġ[$ position ] Ġis Ġnot Ġa Ġvalid . ĠThe Ġparameter Ġformat Ġshould Ġbe Ġtwo Ġnumbers Ġseparated Ġby Ġcomma . Ġ( i . e . Ġ- Ġ 1 0 , 2 0 )") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsplit [ 0 ]. toInt () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" the Ġposition Ġparameter Ġ[$ position ] Ġis Ġnot Ġa Ġvalid . ĠThe Ġparameter Ġformat Ġshould Ġbe Ġtwo Ġnumbers Ġseparated Ġby Ġcomma . Ġ( i . e . Ġ- Ġ 1 0 , 2 0 )") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsplit [ 1 ]. toInt () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" the Ġposition Ġparameter Ġ[$ position ] Ġis Ġnot Ġa Ġvalid . ĠThe Ġparameter Ġformat Ġshould Ġbe Ġtwo Ġnumbers Ġseparated Ġby Ġcomma . Ġ( i . e . Ġ- Ġ 1 0 , 2 0 )") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġweb Driver Manager . waitFor Element Present ( element Locator ) ĊĠĠĠĠĠĠĠ Ġweb Driver Manager . scrollTo Element ( element Locator ) ĊĠĠĠĠĠĠĠ Ġweb Driver Manager . execute WebDriver Step Ġ{ Ġdriver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement : ĠWeb Element Ġ= ĠElement Locator Service . locate Element ( driver , Ġelement Locator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠAssertionError (" the Ġelement Ġ[$ element Locator ] Ġshould Ġbe Ġpresent Ġon Ġthe Ġpage , Ġbut Ġis Ġnot ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠActions ( driver ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. moveTo Element ( element , Ġx , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. double Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ //---------------------------------------------------------------- ------------------------------------------------ ------ ĊĠĠĠ Ġ@ When ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" I Ġscroll Ġinto Ġview Ġthe Ġelement Ġ<< element Locator >> ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Changes Ġthe Ġscroll Ġbar Ġposition Ġto Ġbring Ġthe Ġelement Ġinto Ġthe Ġview Ġport Ġof Ġthe Ġbrowser " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġscroll To Element ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Param ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠSelen ium Shared Descriptions . ELEMENT _ LOC ATOR _ DESCRIPTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Locator : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" scrollTo Element \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" --------------- \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" element Locator Ġ: Ġ$ element Locator \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġweb Driver Manager . waitFor Element Present ( element Locator ) ĊĠĠĠĠĠĠĠ Ġweb Driver Manager . scrollTo Element ( element Locator ) ĊĠĠĠ Ġ} Ċ } Ċ