package Ġcom . x ina iz . w ds . core . v 2 . core . wait Ċ Ċ import Ġcom . google . common . base . Join er Ċ import Ġcom . x ina iz . w ds . core . v 2 . core . by context . Search Context Provider Ċ import Ġcom . x ina iz . w ds . core . v 2 . core . util . imp ossible Ċ import Ġorg . openqa . selenium .* Ċ import Ġjava . util . logging . Level Ċ import Ġjava . util . logging . Logger Ċ import Ġjava . util . regex . Pattern Ċ Ċ /** Ċ Ġ* ĠC anned Ġ[ Search Context Condition ] s Ġwhich Ġare Ġgenerally Ġuseful Ġwithin Ġwebdriver Ġtests . Ċ Ġ*/ Ċ Ċ object ĠSearch Context Conditions Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLogger . getLogger ( Search Context Conditions :: class . java . name ) ĊĊĠĠĠ Ġfun Ġpresence Of Element Loc ated ( locator : ĠBy ) Ġ= Ġobject Ġ: ĠSearch Context Condition < WebElement > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠWeb Element ? Ġ= Ġfind Element ( locator , Ġinput ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" presence Ġof Ġelement Ġlocated Ġby : Ġ$ locator " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvisibility Of Element Loc ated ( locator : ĠBy ) Ġ= Ġobject Ġ: ĠSearch Context Condition < WebElement > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠWeb Element ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement If Visible ( findElement ( locator , Ġinput )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSt ale Element Reference Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" visibility Ġof Ġelement Ġlocated Ġby Ġ$ locator " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvisibility Of All Elements Loc ated By ( locator : ĠBy ) Ġ= Ġobject Ġ: ĠSearch Context Condition < List < WebElement >> Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠList < WebElement >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġfind Elements ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġelements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! element . is Displayed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( elements . size Ġ> Ġ 0 ) Ġelements Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" visibility Ġof Ġall Ġelements Ġlocated Ġby Ġ$ locator " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġelement If Visible ( element : ĠWeb Element ): ĠWeb Element ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( element . is Displayed ) Ġelement Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpresence Of All Elements Loc ated By ( locator : ĠBy ) Ġ= Ġobject Ġ: ĠSearch Context Condition < List < WebElement >> Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠList < WebElement >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġfind Elements ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( elements . isNotEmpty ()) Ġelements Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" presence Ġof Ġany Ġelements Ġlocated Ġby Ġ$ locator " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtext ToBe Present In Element Loc ated ( locator : ĠBy , Ġtext : ĠString ) Ġ= Ġobject Ġ: ĠSearch Context Condition < WebElement > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠWeb Element ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġfind Element ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( element . text . contains ( text )) Ġelement Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSt ale Element Reference Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format (" text Ġ(' % s ') Ġto Ġbe Ġpresent Ġin Ġelement Ġfound Ġby Ġ% s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext , Ġlocator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtext ToBe Present In Element Value ( locator : ĠBy , Ġtext : ĠString ) Ġ= Ġobject Ġ: ĠSearch Context Condition < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠBoolean ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Text Ġ= Ġfind Element ( locator , Ġinput ). getAttribute (" value ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Text ?. contains ( text ) Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSt ale Element Reference Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format (" text Ġ(' % s ') Ġto Ġbe Ġthe Ġvalue Ġof Ġelement Ġlocated Ġby Ġ% s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext , Ġlocator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġin visibility Of Element Loc ated ( locator : ĠBy ) Ġ= Ġobject Ġ: ĠSearch Context Condition < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ! findElement ( locator , Ġinput ). is Displayed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch ElementException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturns Ġtrue Ġbecause Ġthe Ġelement Ġis Ġnot Ġpresent Ġin ĠDOM . ĠThe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtry Ġblock Ġchecks Ġif Ġthe Ġelement Ġis Ġpresent Ġbut Ġis Ġinvisible . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSt ale Element Reference Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturns Ġtrue Ġbecause Ġstale Ġelement Ġreference Ġimplies Ġthat Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis Ġno Ġlonger Ġvisible . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" element Ġto Ġno Ġlonger Ġbe Ġvisible : Ġ$ locator " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġin visibility Of Element With Text ( locator : ĠBy , Ġtext : ĠString ) Ġ= Ġobject Ġ: ĠSearch Context Condition < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfind Element ( locator , Ġinput ). text Ġ!= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch ElementException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturns Ġtrue Ġbecause Ġthe Ġelement Ġwith Ġtext Ġis Ġnot Ġpresent Ġin ĠDOM . ĠThe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtry Ġblock Ġchecks Ġif Ġthe Ġelement Ġis Ġpresent Ġbut Ġis Ġinvisible . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSt ale Element Reference Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturns Ġtrue Ġbecause Ġstale Ġelement Ġreference Ġimplies Ġthat Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis Ġno Ġlonger Ġvisible . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format (" element Ġcontaining Ġ'% s ' Ġto Ġno Ġlonger Ġbe Ġvisible : Ġ% s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext , Ġlocator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġelement ToBe Clickable ( locator : ĠBy ) Ġ= Ġobject Ġ: ĠSearch Context Condition < WebElement > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠWeb Element ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġvisibility Of Element Loc ated ( locator ). apply ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( element Ġ!= Ġnull Ġ&& Ġelement . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSt ale Element Reference Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" element Ġto Ġbe Ġclick able : Ġ$ locator " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġelement ToBe Selected ( locator : ĠBy ) Ġ= Ġelement Selection State ToBe ( locator , Ġtrue ) ĊĊĠĠĠ Ġfun Ġelement Selection State ToBe ( locator : ĠBy , Ġselected : ĠBoolean ) Ġ= Ġobject Ġ: ĠSearch Context Condition < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠBoolean ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġfind Element ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelement . isSelected Ġ== Ġselected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSt ale Element Reference Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format (" element Ġfound Ġby Ġ% s Ġto Ġ% s be Ġselected ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocator , Ġif Ġ( selected ) Ġ"" Ġelse Ġ" not Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnot ( condition : ĠSearch Context Condition <* >) Ġ= Ġobject Ġ: ĠSearch Context Condition < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcondition . apply ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult Ġ== Ġnull Ġ|| Ġresult Ġ== Ġjava . lang . Boolean . FALSE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" condition Ġto Ġnot Ġbe Ġvalid : Ġ$ condition " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Element ( by : ĠBy , Ġinput : ĠSearch Context Provider ?): ĠWeb Element Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Context Ġ= Ġinput !!. search Context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsearch Context . find Elements ( by ). stream (). findFirst (). orElse Throw Ġ{ ĠNoSuch ElementException (" Cannot Ġlocate Ġan Ġelement Ġusing Ġ$ by ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch ElementException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠWebDriver Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . message ?. contains (" Cannot Ġtake Ġscreenshot Ġwith Ġ 0 ") Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException (" Cannot Ġlocate Ġan Ġelement Ġusing Ġ$ by . Ġ( Cannot Ġtake Ġscreenshot Ġwith Ġ 0 ...) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . log ( Level . WARNING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format (" WebDriver Exception Ġthrown Ġby Ġfind Element (% s )", Ġby ), Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Elements ( by : ĠBy , Ġinput : ĠSearch Context Provider ?): ĠList < WebElement > Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Context Ġ= Ġinput !!. search Context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsearch Context . find Elements ( by ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠWebDriver Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . message ?. contains (" Cannot Ġtake Ġscreenshot Ġwith Ġ 0 ") Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException (" Cannot Ġlocate Ġan Ġelement Ġusing Ġ$ by . Ġ( Cannot Ġtake Ġscreenshot Ġwith Ġ 0 ...) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . log ( Level . WARNING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format (" WebDriver Exception Ġthrown Ġby Ġfind Elements (% s )", Ġby ), Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġattribute ToBe ( locator : ĠBy , Ġattribute : ĠString , Ġvalue : ĠString ) Ġ= Ġobject Ġ: ĠSearch Context Condition < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent Value : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġfind Element ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Value Ġ= Ġelement . getAttribute ( attribute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Value Ġ== Ġnull Ġ|| Ġcurrent Value !!. isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Value Ġ= Ġelement . getC ss Value ( attribute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue Ġ== Ġcurrent Value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format (" value Ġto Ġbe Ġ\"% s \" . ĠCurrent Ġvalue : Ġ\"% s \"", Ġvalue , Ġcurrent Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtext ToBe ( locator : ĠBy , Ġvalue : ĠString ) Ġ= Ġobject Ġ: ĠSearch Context Condition < WebElement > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent Value : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠWeb Element ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġfind Element ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Value Ġ= Ġelement . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( current Value Ġ== Ġvalue ) Ġelement Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format (" text Ġto Ġbe Ġ\"% s \" . ĠCurrent Ġtext : Ġ\"% s \"", Ġvalue , Ġcurrent Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtext Matches ( locator : ĠBy , Ġpattern : ĠPattern ) Ġ= Ġobject Ġ: ĠSearch Context Condition < WebElement > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent Value : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠWeb Element ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġfind Element ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Value Ġ= Ġelement . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( pattern . matcher ( current Value !! ). find ()) Ġelement Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format (" text Ġto Ġmatch Ġpattern Ġ\"% s \" . ĠCurrent Ġtext : Ġ\"% s \"", Ġpattern . pattern (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠnumberOf Elements ToBe More Than ( locator : ĠBy , Ġnumber : ĠInt ) Ġ= Ġobject Ġ: ĠSearch Context Condition < List < WebElement >> Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent Number : ĠInt ? Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠList < WebElement >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġfind Elements ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Number Ġ= Ġelements . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( current Number !! Ġ> Ġnumber ) Ġelements Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format (" number Ġto Ġbe Ġmore Ġthan Ġ\"% s \" . ĠCurrent Ġnumber : Ġ\"% s \"", Ġnumber , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Number ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠnumberOf Elements ToBe LessThan ( locator : ĠBy , Ġnumber : ĠInt ) Ġ= Ġobject Ġ: ĠSearch Context Condition < List < WebElement >> Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent Number : ĠInt ? Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠList < WebElement >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġfind Elements ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Number Ġ= Ġelements . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( current Number !! Ġ< Ġnumber ) Ġelements Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format (" number Ġto Ġbe Ġless Ġthan Ġ\"% s \" . ĠCurrent Ġnumber : Ġ\"% s \"", Ġnumber , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Number ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠnumberOf Elements ToBe ( locator : ĠBy , Ġnumber : ĠInt ) Ġ= Ġobject Ġ: ĠSearch Context Condition < List < WebElement >> Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent Number : ĠInt ? Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠList < WebElement >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġfind Elements ( locator , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Number Ġ= Ġelements . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( current Number Ġ== Ġnumber ) Ġelements Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format (" number Ġto Ġbe Ġ\"% s \" . ĠCurrent Ġnumber : Ġ\"% s \"", Ġnumber , Ġcurrent Number ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġframe ToBe Available And Switch To It ( locator : ĠBy ) Ġ= Ġobject Ġ: ĠSearch Context Condition < WebDriver > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠWebDriver ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput !!. web Driver . switch To (). frame ( findElement ( locator , Ġinput )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch Frame Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" frame Ġto Ġbe Ġavailable : Ġ$ locator " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġor ( var arg Ġconditions : ĠSearch Context Condition <* >) Ġ= Ġobject Ġ: ĠSearch Context Condition < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast Exception : ĠRuntimeException ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( condition Ġin Ġconditions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcondition . apply ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġis ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( java . lang . Boolean . TRUE Ġ== Ġresult ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Exception Ġ= Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Exception Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġlast Exception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠStringBuilder (" at Ġleast Ġone Ġcondition Ġto Ġbe Ġvalid : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJoin er . on (" Ġ|| Ġ"). appendTo ( message , Ġconditions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmessage . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġand ( var arg Ġconditions : ĠSearch Context Condition <* >) Ġ= Ġobject Ġ: ĠSearch Context Condition < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( input : ĠSearch Context Provider ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( condition Ġin Ġconditions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcondition . apply ( input ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġis ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( java . lang . Boolean . FALSE Ġ== Ġresult ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠStringBuilder (" all Ġconditions Ġto Ġbe Ġvalid : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJoin er . on (" Ġ&& Ġ"). appendTo ( message , Ġconditions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmessage . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ