/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠAutom ate ĠThe ĠPlan et ĠLtd . Ċ Ġ* ĠAuthor : ĠAnt on ĠAnge lov Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġtip str icks Ċ Ċ import Ġorg . apache . tools . ant . util . FileUtils Ċ import Ġorg . openqa . selenium .* Ċ import Ġorg . openqa . selenium . support . ui . WebDriver Wait Ċ import Ġkotlin . Throws Ċ import Ġjava . io . IOException Ċ import Ġorg . openqa . selenium . chrome . Chrome Options Ċ import Ġorg . openqa . selenium . chrome . Chrome Driver Ċ import Ġorg . openqa . selenium . firefox . Firefox Driver Ċ import Ġorg . openqa . selenium . firefox . Firefox Options Ċ import Ġjava . io . File Ċ import Ġjava . util . HashMap Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġorg . openqa . selenium . firefox . Firefox Profile Ċ import Ġorg . openqa . selenium . firefox . Profiles Ini Ċ import Ġorg . openqa . selenium . inter actions . Actions Ċ import Ġjava . lang . InterruptedException Ċ import Ġorg . openqa . selenium . support . ui . Expected Conditions Ċ import Ġorg . testng . Assert Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . lang . System Ċ import Ġorg . testng . annotations . After Class Ċ import Ġorg . testng . annotations . BeforeClass Ċ import Ġorg . testng . annotations . Test Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjava . lang . Exception Ċ import Ġjava . nio . file . Files Ċ import Ġjavax . image io . Image IO Ċ Ċ class ĠT ips Tr icks Tests Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdriver : ĠWebDriver ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwait : ĠWebDriver Wait ĊĠĠĠĠĊĠĠĠ Ġ@ BeforeClass ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġtest Setup () Ġ{ ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" webdriver . chrome . driver ", Ġ" resources \\ chro med river . exe ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 5 . ĠExecute Ġtests Ġin Ġhead less ĠChrome ĊĠĠĠĠĠĠĠ Ġval Ġchrome Options Ġ= ĠChrome Options () ĊĠĠĠĠĠĠĠ Ġchrome Options . add Arguments ("-- headless ", Ġ"-- disable - gpu ", Ġ"-- window - size = 1 9 2 0 , 1 2 0 0 ", Ġ"-- ignore - certificate - errors ") ĊĠĠĠĠĠĠĠ Ġdriver Ġ= ĠChrome Driver ( chrome Options ) ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 2 . ĠSet ĠHTTP ĠProxy ĠChrome Driver ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠProxy () ĊĠĠĠĠĠĠĠ Ġproxy . proxy Type Ġ= ĠProxy . Proxy Type . MAN UAL ĊĠĠĠĠĠĠĠ Ġproxy . is Aut ode t ect Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġproxy . ssl Proxy Ġ= Ġ" 1 2 7 . 0 . 0 . 1 : 3 2 3 9 " ĊĠĠĠĠĠĠĠ Ġchrome Options . set Proxy ( proxy ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 3 . ĠSet ĠHTTP ĠProxy Ġwith ĠAuthentication ĠChrome Driver ĊĠĠĠĠĠĠĠ Ġ// Ġchrome Options . add Arguments ("-- proxy - server = http :// user : password @ 1 2 7 . 0 . 0 . 1 : 3 2 3 9 "); ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 4 . Ġt art ĠChrome Driver Ġwith Ġan ĠPacked ĠExtension ĊĠĠĠĠĠĠĠ Ġchrome Options . add Arguments (" load - extension =/ path To / extension ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 5 . ĠStart ĠChrome Driver Ġwith Ġan ĠUn packed ĠExtension ĊĠĠĠĠĠĠĠ Ġchrome Options . add Extensions ( File (" local / path / to / extension . cr x ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 9 . ĠVerify ĠFile ĠDown loaded ĠChrome Driver ĊĠĠĠĠĠĠĠ Ġ// ĠString Ġdownload File path Ġ= Ġ" c :\\ temp "; ĊĠĠĠĠĠĠĠ Ġval Ġchrome Prefs Ġ= ĠHashMap < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġchrome Prefs [" profile . default _ content _ settings . pop ups "] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġchrome Prefs [" download . default _ directory "] Ġ= Ġ" download File path " ĊĠĠĠĠĠĠĠ Ġchrome Options . set Experimental Option (" prefs ", Ġchrome Prefs ) ĊĠĠĠĠĠĠĠ Ġchrome Options . add Arguments ("-- test - type ") ĊĠĠĠĠĠĠĠ Ġchrome Options . add Arguments (" start - max im ized ", Ġ" disable - popup - blocking ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 8 . 2 . ĠHandle ĠSSL ĠCertificate ĠError ĠChrome Drive ĊĠĠĠĠĠĠĠ Ġchrome Options . add Arguments ("-- ignore - certificate - errors ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 7 . ĠUse ĠSpecific ĠProfile Ġin ĠChrome ĊĠĠĠĠĠĠĠ Ġchrome Options . add Arguments (" user - data - d ri = C :\\ Users \\ Your Ġpath Ġto Ġuser \\ Roaming \\ Google \\ Chrome \\ User ĠData ") ĊĠĠĠĠĠĠĠ Ġdriver Ġ= ĠChrome Driver () ĊĠĠĠĠĠĠĠ Ġdriver . manage (). timeout s (). implicit ly Wait ( 1 0 , ĠTimeUnit . SECONDS ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 0 . ĠMax imize ĠWindow ĊĠĠĠĠĠĠĠ Ġdriver . manage (). window (). max imize () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 4 . ĠSet ĠPage ĠLoad ĠTimeout ĊĠĠĠĠĠĠĠ Ġ// Ġdriver . manage (). timeout s (). page Load Timeout ( 1 0 , ĠTimeUnit . SECONDS ); ĊĠĠĠĠĠĠĠ Ġwait Ġ= ĠWebDriver Wait ( driver , Ġ 3 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 7 . ĠUse ĠSpecific ĠProfile Ġin ĠFirefox ĊĠĠĠĠĠĠĠ Ġval Ġprofile Ġ= ĠPro files Ini () ĊĠĠĠĠĠĠĠ Ġval Ġfire fox Profile Ġ= Ġprofile . get Profile (" xyz Profile ") ĊĠĠĠĠĠĠĠ Ġval Ġfire fox Options Ġ= ĠFirefox Options () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 8 . ĠTurn ĠOff ĠJavaScript ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Preference (" javascript . enabled ", Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 6 . ĠChange ĠUser ĠAgent ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Preference (" general . user agent . override ", Ġ" Mozilla / 5 . 0 Ġ( Black B erry ; ĠU ; ĠBlack B erry Ġ 9 9 0 0 ; Ġen ) ĠAppleWebKit / 5 3 4 . 1 1 + Ġ( KHTML , Ġlike ĠGecko ) ĠVersion / 7 . 1 . 0 . 3 4 6 ĠMobile ĠSafari / 5 3 4 . 1 1 +") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 7 . ĠSet ĠHTTP ĠProxy Ġfor ĠBrowser ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Preference (" network . proxy . type ", Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Preference (" network . proxy . http ", Ġ" my proxy . com ") ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Preference (" network . proxy . http _ port ", Ġ 3 2 3 9 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 8 . ĠHandle ĠSSL ĠCertificate ĠError ĠFirefox Driver ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Accept Un trusted Certificates ( true ) ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Ass ume Un trusted Certificate Issuer ( false ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 1 . ĠStart ĠFirefox Driver Ġwith ĠPlugins ĊĠĠĠĠĠĠĠ Ġfire fox Profile . add Extension ( File (" C :\\ extensions Location \\ extension . x pi ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 3 0 . ĠVerify ĠFile ĠDown loaded ĠFirefox Driver ĊĠĠĠĠĠĠĠ Ġval Ġdownload File path Ġ= Ġ" c :\\ temp " ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Preference (" browser . download . folder List ", Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Preference (" browser . download . dir ", Ġdownload File path ) ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Preference (" browser . download . manager . alert On EXE Open ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġfire fox Profile . set Preference (" browser . helper Apps . never Ask . save To Disk ", Ġ" application / ms word , Ġapplication / binary , Ġapplication / ris , Ġtext / csv , Ġimage / png , Ġapplication / pdf , Ġtext / html , Ġtext / plain , Ġapplication / zip , Ġapplication / x - zip , Ġapplication / x - zip - compressed , Ġapplication / download , Ġapplication / octet - stream ") ĊĠĠĠĠĠĠĠ Ġfire fox Options . set Profile ( firefox Profile ) ĊĠĠĠĠĠĠĠ Ġval Ġfire fox Driver : ĠWebDriver Ġ= ĠFirefox Driver ( firefox Options ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Class ĊĠĠĠ Ġfun Ġafter Class () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . quit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtake Full Screenshot _ test () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// autom ate the planet . com ") ĊĠĠĠĠĠĠĠ Ġtake Full Screenshot (" test Image ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtake Element Screenshot _ test () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// autom ate the planet . com ") ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġwait . until ( Expected Conditions . visibility Of Element Loc ated ( By . xpath ("/ html / body / div [ 1 ]/ header / div / div [ 2 ]/ div / div [ 2 ]/ nav "))) ĊĠĠĠĠĠĠĠ Ġtake Screenshot Of Element ( element , Ġ" test Element Image ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 2 . ĠGet ĠHTML ĠSource Ġof ĠWeb Element ĊĠĠĠ Ġ@ get : Test ĊĠĠĠ Ġval Ġhtml Source Of WebElement : ĠUnit ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// autom ate the planet . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġwait . until ( Expected Conditions . visibility Of Element Loc ated ( By . xpath ("/ html / body / div [ 1 ]/ header / div / div [ 2 ]/ div / div [ 2 ]/ nav "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Html Ġ= Ġelement . getAttribute (" innerHTML ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( source Html ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 3 . ĠExecute ĠJavaScript ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexecute JavaScript () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// autom ate the planet . com ") ĊĠĠĠĠĠĠĠ Ġval Ġjavascript Executor Ġ= Ġdriver Ġas ĠJavascript Executor ? ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġjavascript Executor !!. execute Script (" return Ġdocument . title ") Ġas ĠString ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 4 . ĠVisibility Ġof Ġall Ġelements Ġwait ĊĠĠĠĠĠĠĠ Ġwait . until ( Expected Conditions . visibility Of All Elements ( driver . find Elements ( By . xpath (" //* [@ id =' t ve _ editor ']/ div [ 2 ]/ div [ 2 ]/ div / div ")) )) ĊĠĠĠĠĠĠĠ Ġprintln ( title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 6 . ĠCheck ĠIf Ġan ĠElement ĠIs ĠVis ible ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck If Element Is Visible () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// autom ate the planet . com ") ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġdriver . findElement ( By . xpath ("/ html / body / div [ 1 ]/ header / div / div [ 2 ]/ div / div [ 2 ]/ nav ")) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( element . is Displayed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmanage Cookies () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// autom ate the planet . com ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġall Ġcookies ĊĠĠĠĠĠĠĠ Ġval Ġcookies Ġ= Ġdriver . manage (). cookies ĊĠĠĠĠĠĠĠ Ġfor Ġ( cookie Ġin Ġcookies ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( cookie . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġa Ġcookie Ġby Ġname ĊĠĠĠĠĠĠĠ Ġval Ġfb Pixel Cookie Ġ= Ġdriver . manage (). get Cookie Named ("_ fb p ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġa Ġnew Ġcookie Ġby Ġname ĊĠĠĠĠĠĠĠ Ġval Ġnew Cookie Ġ= ĠCookie (" custom Name ", Ġ" custom Value ") ĊĠĠĠĠĠĠĠ Ġdriver . manage (). add Cookie ( new Cookie ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdelete Ġa Ġcookie ĊĠĠĠĠĠĠĠ Ġdriver . manage (). delete Cookie ( fb Pixel Cookie ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdelete Ġa Ġcookie Ġby Ġname ĊĠĠĠĠĠĠĠ Ġdriver . manage (). delete Cookie Named (" custom Name ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġdelete Ġall Ġcookies ĊĠĠĠĠĠĠĠ Ġdriver . manage (). delete All Cookies () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 1 1 . ĠDrag Ġand ĠDrop ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdrag And Drop () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// loop j . com / jquery - simple - slider /") ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġdriver . findElement ( By . xpath (" //* [@ id =' project ']/ p [ 1 ]/ div / div [ 2 ] ")) ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠActions ( driver ) ĊĠĠĠĠĠĠĠ Ġaction . drag And Drop By ( element , Ġ 3 0 , Ġ 0 ). build (). perform () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 1 2 . ĠUpload Ġa ĠFile ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfile Upload () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" https :// demos . tel erik . com / aspnet - ajax / ajax panel / application - scenarios / file - upload / default cs . aspx ") ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġdriver . findElement ( By . id (" ctl 0 0 _ Content Placeholder 1 _ Rad Upload 1 file 0 ")) ĊĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= ĠPaths . get ( System . getProperty (" java . io . tmpdir "), Ġ" debug WebDriver . xml "). toString () ĊĠĠĠĠĠĠĠ Ġval Ġdest File Ġ= ĠFile ( filePath ) ĊĠĠĠĠĠĠĠ Ġdest File . createNew File () ĊĠĠĠĠĠĠĠ Ġelement . send Keys ( filePath ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 1 3 . ĠHandle ĠJavaScript ĠPop - ups ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġhandle Java S cri p Pop U ps () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// www . w 3 sch ools . com / js / try it . asp ? filename = try js _ confirm ") ĊĠĠĠĠĠĠĠ Ġdriver . switch To (). frame (" iframe Result ") ĊĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= Ġdriver . findElement ( By . xpath ("/ html / body / button ")) ĊĠĠĠĠĠĠĠ Ġbutton . click () ĊĠĠĠĠĠĠĠ Ġval Ġalert Ġ= Ġdriver . switch To (). alert () ĊĠĠĠĠĠĠĠ Ġif Ġ( alert . text Ġ== Ġ" Press Ġa Ġbutton !") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert . accept () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 1 4 . ĠSwitch ĠBet ween ĠBrowser ĠWindows Ġor ĠTabs ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmoving Between Tabs () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" https :// www . autom ate the planet . com /") ĊĠĠĠĠĠĠĠ Ġval Ġfirst Link Ġ= Ġdriver . findElement ( By . xpath (" //* [@ id =' menu - item - 1 1 3 6 2 ']/ a ")) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Link Ġ= Ġdriver . findElement ( By . xpath (" //* [@ id =' menu - item - 6 ']/ a ")) ĊĠĠĠĠĠĠĠ Ġval Ġselect Link Open nin New Tab Ġ= ĠKeys . ch ord ( Keys . CONTROL , ĠKeys . RETURN ) ĊĠĠĠĠĠĠĠ Ġfirst Link . send Keys ( select Link Open nin New Tab ) ĊĠĠĠĠĠĠĠ Ġsecond Link . send Keys ( select Link Open nin New Tab ) ĊĠĠĠĠĠĠĠ Ġval Ġwindows Ġ= Ġdriver . window Handles ĊĠĠĠĠĠĠĠ Ġval Ġfirst Tab Ġ= Ġwindows . to Typed Array ()[ 1 ] Ġas ĠString ĊĠĠĠĠĠĠĠ Ġval Ġlast Tab Ġ= Ġwindows . to Typed Array ()[ 2 ] Ġas ĠString ĊĠĠĠĠĠĠĠ Ġdriver . switch To (). window ( last Tab ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" Resources Ġ- ĠAutom ate ĠThe ĠPlan et ", Ġdriver . title ) ĊĠĠĠĠĠĠĠ Ġdriver . switch To (). window ( first Tab ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" Blog Ġ- ĠAutom ate ĠThe ĠPlan et ", Ġdriver . title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 1 5 . ĠNavigation ĠHistory ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnavigation History () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" https :// www . code project . com / Articles / 1 0 7 8 5 4 1 / Advanced - WebDriver - Tips - and - Tr icks - Part ") ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// www . code project . com / Articles / 1 0 1 7 8 1 6 / Speed - up - Sel enium - Tests - through - RAM - Fact s - and - My th ") ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). back () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 1 0 ĠAdvanced ĠWebDriver ĠT ips Ġand ĠTr icks Ġ- ĠPart Ġ 1 Ġ- ĠCode Project ", Ġdriver . title ) ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). refresh () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 1 0 ĠAdvanced ĠWebDriver ĠT ips Ġand ĠTr icks Ġ- ĠPart Ġ 1 Ġ- ĠCode Project ", Ġdriver . title ) ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). forward () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" Speed Ġup ĠSelen ium ĠTests Ġthrough ĠRAM ĠF acts Ġand ĠMy ths Ġ- ĠCode Project ", Ġdriver . title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 1 9 . ĠScroll ĠFocus Ġto ĠControl ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġscroll Focus To Control () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// autom ate the planet . com /") ĊĠĠĠĠĠĠĠ Ġval Ġour Mission Link Ġ= Ġdriver . findElement ( By . xpath (" //* [@ id =\" panel - 6 4 3 5 - 0 - 0 - 4 \"] / div ")) ĊĠĠĠĠĠĠĠ Ġval Ġjs ToBe Executed Ġ= ĠString . format (" window . scroll ( 0 , Ġ{ 0 }); ", Ġour Mission Link . location . getY ()) ĊĠĠĠĠĠĠĠ Ġval Ġjavascript Executor Ġ= Ġdriver Ġas ĠJavascript Executor ? ĊĠĠĠĠĠĠĠ Ġjavascript Executor !!. execute Script ( js ToBe Executed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 2 0 . ĠFocus Ġon Ġa ĠControl ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfocus On Control () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// autom ate the planet . com /") ĊĠĠĠĠĠĠĠ Ġwait Until Loaded () ĊĠĠĠĠĠĠĠ Ġval Ġour Mission Link Ġ= Ġdriver . findElement ( By . xpath (" //* [@ id =\" panel - 6 4 3 5 - 0 - 0 - 4 \"] / div ")) ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠActions ( driver ) ĊĠĠĠĠĠĠĠ Ġaction . moveTo Element ( our Mission Link ). build (). perform () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 2 6 . ĠAssert Ġa ĠButton ĠEnabled Ġor ĠDisabled ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġassert Button Enabled Disabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" http :// www . w 3 sch ools . com / tags / try it . asp ? filename = try html _ button _ disabled ") ĊĠĠĠĠĠĠĠ Ġdriver . switch To (). frame (" iframe Result ") ĊĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= Ġdriver . findElement ( By . xpath ("/ html / body / button ")) ĊĠĠĠĠĠĠĠ ĠAssert . assertFalse ( button . isEnabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 2 7 . ĠSet Ġand ĠAssert Ġthe ĠValue Ġof Ġa ĠHidden ĠField ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset Hidden Field () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// < input Ġtype =" hidden " Ġname =" country " Ġvalue =" Bul g aria "/> ĊĠĠĠĠĠĠĠ Ġval Ġthe Hidden Elem Ġ= Ġdriver . findElement ( By . name (" country ")) ĊĠĠĠĠĠĠĠ Ġval Ġjavascript Executor Ġ= Ġdriver Ġas ĠJavascript Executor ? ĊĠĠĠĠĠĠĠ Ġjavascript Executor !!. execute Script (" arguments [ 0 ]. value =' Ger many '; ", Ġthe Hidden Elem ) ĊĠĠĠĠĠĠĠ Ġval Ġhidden FieldValue Ġ= Ġthe Hidden Elem . getAttribute (" value ") ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" Ger many ", Ġhidden FieldValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 2 9 . ĠVerify ĠFile ĠDown loaded ĠChrome Driver ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠVerify File Download Chrome () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected FilePath Ġ= ĠPaths . get (" c :\\ temp \\ Testing _ Framework _ 2 0 1 5 _ 3 _ 1 3 1 4 _ 2 _ Free . exe ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver . navigate (). to (" https :// www . tel erik . com / download - trial - file / v 2 / tel erik - testing - framework ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait . until Ġ{ Ġx : ĠWebDriver ? Ġ-> ĠFiles . exists ( expected FilePath ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠFiles . size ( expected FilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 4 3 2 6 1 9 2 , Ġbytes ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Files . exists ( expected FilePath )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . delete ( expected FilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 1 . ĠT aking Ġa ĠScreen shot ĊĠĠĠ Ġfun Ġtake Full Screenshot ( fileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsrc File Ġ= Ġ( driver Ġas ĠTakes Screenshot ). get Screenshot As ( OutputType . FILE ) ĊĠĠĠĠĠĠĠ Ġval Ġtemp Dir Ġ= ĠSystem . getProperty (" java . io . tmpdir ") ĊĠĠĠĠĠĠĠ Ġval Ġdest File Ġ= ĠFile ( Paths . get ( temp Dir , Ġ"$ fileName . png "). toString ()) ĊĠĠĠĠĠĠĠ ĠFileUtils . getFile Utils (). copy File ( src File , Ġdest File ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtake Screenshot Of Element ( element : ĠWeb Element , ĠfileName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscreenshot File Ġ= Ġ( driver Ġas ĠTakes Screenshot ). get Screenshot As ( OutputType . FILE ) ĊĠĠĠĠĠĠĠ Ġval Ġfull Img Ġ= ĠImage IO . read ( screenshot File ) ĊĠĠĠĠĠĠĠ Ġval Ġpoint Ġ= Ġelement . location ĊĠĠĠĠĠĠĠ Ġval Ġelement Width Ġ= Ġelement . size . getWidth () ĊĠĠĠĠĠĠĠ Ġval Ġelement Height Ġ= Ġelement . size . getHeight () ĊĠĠĠĠĠĠĠ Ġval Ġele Screenshot Ġ= Ġfull Img . getSub image ( point . getX (), Ġpoint . getY (), Ġelement Width , Ġelement Height ) ĊĠĠĠĠĠĠĠ ĠImage IO . write ( ele Screenshot , Ġ" png ", Ġscreenshot File ) ĊĠĠĠĠĠĠĠ Ġval Ġtemp Dir Ġ= ĠSystem . getProperty (" java . io . tmpdir ") ĊĠĠĠĠĠĠĠ Ġval Ġdest File Ġ= ĠFile ( Paths . get ( temp Dir , Ġ"$ fileName . png "). toString ()) ĊĠĠĠĠĠĠĠ ĠFileUtils . getFile Utils (). copy File ( screenshot File , Ġdest File ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 4 . ĠSet ĠPage ĠLoad ĠTimeout ĊĠĠĠ Ġprivate Ġfun Ġwait Until Loaded () Ġ{ ĊĠĠĠĠĠĠĠ Ġwait . until Ġ{ Ġx : ĠWebDriver ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjavascript Executor Ġ= Ġdriver Ġas ĠJavascript Executor ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Ready Ġ= Ġjavascript Executor !!. execute Script (" return Ġdocument . readyState ") Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Ready Ġ== Ġ" complete " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 2 8 . ĠWait ĠAJAX ĠCall Ġto ĠComplete ĠUsing ĠJ Query ĊĠĠĠ Ġprivate Ġfun ĠwaitFor Ajax Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġwait . until Ġ{ Ġx : ĠWebDriver ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjavascript Executor Ġ= Ġdriver Ġas ĠJavascript Executor ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Ajax Call Complete Ġ= Ġjavascript Executor !!. execute Script (" return Ġwindow . jQuery Ġ!= Ġundefined Ġ&& ĠjQuery . active Ġ== Ġ 0 ") Ġas ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Ajax Call Complete ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }