package Ġc adm ium Ċ Ċ import Ġorg . openqa . selenium . By Ċ import Ġorg . openqa . selenium . support . ui . Select Ċ Ċ /** Ċ Ġ* ĠRepresents Ġan ĠOption ĠElement Ġlike Ġa Ġdropdown Ġmenu Ġor Ġradio Ġbutton Ġgroup . Ċ Ġ* Ċ Ġ* ĠUn like ĠWeb Element , ĠSelect Options Ġare Ġevaluated Ġeager ly , Ġas Ġit Ġonly Ġserves Ġas Ġa Ġbase Ġfor Ġthe Ġby X Ġmethods . Ċ Ġ* ĠE ager Ġevaluation Ġfails Ġfaster Ġin Ġcase Ġof Ġerrors . Ċ Ġ* Ċ Ġ* Ġ@ property Ġelement ĠWeb Element Ġrepresenting Ġthe Ġfull Ġselect . Ċ Ġ* Ġ@ see Ġorg . openqa . selenium . support . ui . Select Ċ Ġ*/ Ċ class ĠSelect Options ( private Ġval Ġelement : ĠWeb Element ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġoption ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSelect ( element . raw Element ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġthe Ġoption Ġfrom Ġoption Ġby Ġgiven Ġlocator ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġloc Ġmechanism Ġto Ġspecify Ġelement Ġto Ġselect . ĊĠĠĠĠ Ġ* Ġ@ throws ĠNoSuch ElementException ĠIf Ġno Ġmatching Ġoption Ġelements Ġare Ġfound ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġmore Ġthan Ġone Ġelement Ġmatch Ġthe Ġgiven Ġlocator , Ġall Ġare Ġselected . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselect ( loc : ĠSelect Locator ) Ġ= Ġwhen Ġ( loc ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠValue Ġ-> Ġoption . select By Value ( loc . value ) ĊĠĠĠĠĠĠĠ Ġis ĠText Ġ-> Ġoption . select By Visible Text ( loc . text ) ĊĠĠĠĠĠĠĠ Ġis ĠIndex Ġ-> Ġoption . select ByIndex ( loc . index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe select Ġthe Ġoption Ġfrom Ġoption Ġby Ġgiven Ġlocator ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġloc Ġmechanism Ġto Ġspecify Ġelement Ġto Ġde select . ĊĠĠĠĠ Ġ* Ġ@ throws ĠNoSuch ElementException ĠIf Ġno Ġmatching Ġoption Ġelements Ġare Ġfound ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġmore Ġthan Ġone Ġelement Ġmatch Ġthe Ġgiven Ġlocator , Ġall Ġare Ġde selected . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġde select ( loc : ĠSelect Locator ) Ġ= Ġwhen Ġ( loc ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠValue Ġ-> Ġoption . de select By Value ( loc . value ) ĊĠĠĠĠĠĠĠ Ġis ĠText Ġ-> Ġoption . de select By Visible Text ( loc . text ) ĊĠĠĠĠĠĠĠ Ġis ĠIndex Ġ-> Ġoption . de select ByIndex ( loc . index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠSelect Ġall Ġentries Ġof Ġoption . Ġ ĠThis Ġis Ġonly Ġvalid Ġwhen Ġthe ĠSELECT Ġsupports Ġmultiple Ġselections . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException ĠIf Ġthe ĠSELECT Ġdoes Ġnot Ġsupport Ġmultiple Ġselections ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselect All () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! option . is Multiple ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" You Ġmay Ġonly Ġcall Ġselect All Ġon Ġmulti - select Ġoptions !") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( o Ġin Ġoption . options ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! o . isSelected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo . click () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear Ġall Ġselected Ġentries . ĠThis Ġis Ġonly Ġvalid Ġwhen Ġthe ĠSELECT Ġsupports Ġmultiple Ġselections . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException ĠIf Ġthe ĠSELECT Ġdoes Ġnot Ġsupport Ġmultiple Ġselections ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġde selectAll () Ġ= Ġoption . de selectAll () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġall Ġavailable Ġoptions Ġin Ġthis Ġelement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġall Options ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġelement . elements ( Tag (" option ")) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġall Ġcurrently Ġselected Ġoptions Ġin Ġthis Ġelement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġall Selected ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġoption . all Selected Options . map Ġ{ ĠWeb Element ( it , Ġelement . wait , Ġelement . driver , Ġelement . auto Scroll ) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġfirst Ġselected Ġoption Ġin Ġthis Ġelement ĊĠĠĠĠ Ġ* Ġ@ throws ĠNoSuch ElementException ĠIf Ġno Ġoption Ġis Ġselected ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġfirst Selected ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠWeb Element ( option . first Selected Option , Ġelement . wait , Ġelement . driver , Ġelement . auto Scroll ) Ċ } Ċ Ċ /** Ċ Ġ* ĠLoc ator ĠClasses Ġwhich Ġcan Ġbe Ġonly Ġused Ġto Ġselect Ġoptions . Ċ Ġ*/ Ċ sealed Ġclass ĠSelect Locator Ċ Ċ /** Ċ Ġ* ĠSelect Ġall Ġoption Ġelements Ġwhich Ġmatch Ġgiven Ġvalues Ċ Ġ*/ Ċ class ĠValue ( val Ġvalue : ĠString ) Ġ: ĠSelect Locator (), ĠLoc ator Ġ{ ĊĠĠĠ Ġoverride Ġval Ġby : ĠBy ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠBy . xpath ("// option [@ value =\" $ value \"] ") Ċ } Ċ Ċ /** Ċ Ġ* ĠSelect Ġall Ġoption Ġelements Ġwhich Ġhave Ġgiven Ġtext Ġas Ġvisible Ġtext . Ċ Ġ*/ Ċ class ĠText ( val Ġtext : ĠString ) Ġ: ĠSelect Locator (), ĠLoc ator Ġ{ ĊĠĠĠ Ġoverride Ġval Ġby : ĠBy ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠBy . xpath ("// option [ contains ( text (), \" $ text \ ")] ") Ċ } Ċ Ċ /** Ċ Ġ* ĠSelect Ġthe Ġoption Ġat Ġthe Ġgiven Ġindex . ĠThis Ġis Ġdone Ġby Ġex amin ing Ġthe Ġ" index " Ġattribute Ġof Ġan Ċ Ġ* Ġelement , Ġand Ġnot Ġmerely Ġby Ġcounting . Ċ Ġ* Ċ Ġ* Ġ@ property Ġindex Ġindex Ġof Ġelement Ġso Ġselect , Ġmust Ġbe Ġzero Ġor Ġlarger . Ċ Ġ*/ Ċ class ĠIndex ( val Ġindex : ĠInt ) Ġ: ĠSelect Locator () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( index Ġ>= Ġ 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġan ĠOption ĠGroup , Ġa ĠWeb Element Ġwhich Ġis Ġa ĠSELECT Ġtag Ċ Ġ* Ċ Ġ* Ġ@ param Ġloc ĠLoc ator Ġused Ġto Ġidentify Ġthe ĠElement Ċ Ġ* Ġ@ param Ġactions Ġoptional Ġactions Ġexecuted Ġon Ġoption Ġelement Ċ Ġ* Ġ@ return ĠSelect Options Ġwrapping Ġthe ĠSELECT Ġfound Ġby Ġgiven ĠLoc ator Ċ Ġ* Ġ@ throws Ġorg . openqa . selenium . support . ui . Unexpected TagName Exception Ġwhen Ġelement Ġis Ġnot Ġa ĠSELECT Ċ Ġ* Ġ@ sample Ġc adm ium _ test . Test Select . test Select By Value Ċ Ġ* Ċ Ġ* ĠIf Ġmultiple Ġelements Ġmatch Ġthe Ġlocator , Ġthe Ġfirst Ġis Ġreturned . Ċ Ġ*/ Ċ fun ĠSearch Context . option ( loc : ĠLoc ator , Ġactions : ĠSelect Options . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ= ĊĠĠĠ ĠSelect Options ( element ( loc )). apply ( actions )