Saturday, May 11, 2019

File Uploading Using Sikulix




අපි අන්තිමට කරපු පාඩමෙන් අපි කරේ selenium use කරලා  file එකක් upload කරනඑක.

මම එතනදී කිව්වා selenium වලින් අපිට clickවගේ ඩිරෙක්ට් කමාන්ඩ් එකක් දීලා නෑ  ෆයිල් upload කරන්න 

අපි ඒ නිසා කරේ selenium වල තියෙන sendkeys කියන කමාන්ඩ් එක use කරලා file එක upload කරපු එක 

හැබැයි අපිට limitation එකක් තිබ්බා ඒක තමයි අපිට මේ sendkeys කියන කොමාන්ඩ් එක use කරලා file එකක් upload කරන්න පුළුවන් ඒ අපි file upload කරන element එකේ input tag එක file කියලා තියෙනවා නම් විතරයි කියලත් 


input tag එක file කියලා නැත්තම් අපිට sendkeys වලින්file  upload එකක් කරන්න බෑ කියලත් මම ඒ පොස්ට් එකේදී කිව්වා 

(මේ ටික ඔක්කොම කලින් File Uploading Using Selenium එකේ පැහැදිලිව කියලා තියෙනවා )

හරි දැන් අපි එතකොට කරන්න යන්නේ ඒ විදිහට input tag එක file නොවුන තැනකදී කොහොමද file එකක් upload කරන්නේ කියන එක 


මෙන්න මේ සයිට් එකට ගියාම මේකේ තියෙන්නෙත් file එකක් upload කරන්න 

Drop file here or click to upload. (5GB max) කියන තැන click කරාම ඔයාට manully පුළුවන් file එකක් upload කරන්න 

මම එතන inspect කරලා බැලුවම ඒ element එක පෙන්නන්නේ මෙන්න මෙහෙම 



ඒ කියන්නේ මේ සයිට් එකේ file upload එක තියෙන්නේ input tag එකක් ඇතුලේ නෙවෙයි div tag එකක් ඇතුලේ 

ඒ නිසා අපිට බෑ මේ සයිට් එකට sendkeys කියන කොමාන්ඩ් එක use කරලා file එකක් upload කරන්න 

අන්න ඒ වගේ වෙලාවලට ප්‍රයෝජනයට ගන්න තමයි මේ sikulix කියන API එක අපිට උදව්වට එන්නේ 

මේ sikulix කියන API එකෙන් කරන්නේ මොකක්ද?


මෙහෙමයි , මෙච්චර කල් අපි කරේ selenium වලින් element එකක් හොයාගෙන එකට click කරන එක හරි type කරන එක හරි නේ 

ඒ කිව්වේ ඉස්සලා inspect කරලා element එකේ name එක id එක හරි xpath එක හරි හොයාගෙන එක selenium වලින් click කරන එක හරි type කරන එක නේ 

හැබැයි මේ sikulix වලින් අපි කරන්නේ එහෙම නෙවෙයි 

අපිට click කරන්න ඕන හරි type කරන්න ඕන හරි element එකේ image එකක් දීල අපි කියනවා සයිට් එකේ මෙන්න මේ image එක උඩ click කරන්න එහෙමත් නැත්තම් සයිට් එකේ මෙන්න මේ image එක උඩ type  කරන්න කියලා 


කෙටියෙන් කිව්වොත් sikulix කියන්නේ Image-based Automation වලට support කරන   API එකක් 

දැන් පොඩ්ඩක් අපැහැදිලි ගතියක් ඇති 
ගොඩ ඉදන් පිනන්නේ නැතුව  අපි වැඩේට බහිමු 

මුලින්ම හදනව මම project එකක් SikulixTest කියලා (project එක හදන විදිහ ඔක්කොම මම කලින් post වල කියල දීල තියෙනවා )

project එක හදලා මම එකට දානව වෙනද වගේම dependency දෙකක්  ඒ 
1. Selenium 
2. TestNG 

ඊට අමතරව මම දැන් දැන්ව අලුත් dependency එකක් එක තමයි sikulix API  කියන එක https://mvnrepository.com/artifact/com.sikulix/sikulixapi/1.1.0

(මෙන්න මේ ලින්ක් එකම use කරන්න , මොකද ගොඩක් dependency තියෙනවා එකම නමින් )

හරි දැන් pom .xml ෆයිල් එක මේ විදිහට ඇති 




හරි ඊළගට මම class එකක් හදාගන්නවා UploadTest කියලා , එක ඇතුලෙදි මම මගේ class එකේ structure එක හදාගන්නවා මෙන්න මෙහෙම 



හරි දැන් මම ටෙස්ට් එක ලියන්න යන්නේ මුලින්ම මම දෙනවා get එකක් මට යන්න ඕන සයිට් එකට 

ඊට පස්සේ මම බලනවා මට මේ ෆයිල් එක upload කරන එක කොච්චර දුරට selenium වලින් කරන්න පුලුවන්ද කියලා 

ඒ කියන්නේ මෙහෙමයි 
1. මට සයිට් එකට යන එක selenium වලින් කරන්න පුළුවන්  (driver .get ())
2. ඊට පස්සේ Drop file here or click to upload. (5GB max) කියන තැන click කරන්නත් පුළුවන් මට selenium  වලින් 

එතකොට මෙන්න මේ වගේ windows popup එකක් open වෙනවා 




මෙන්න මේ windows popup එක අවට පස්සේ මට එතනින් එහාට selenium  වලින් handle කරන්න බැරි වෙන්ව , මොකද මේ windows popup එක වෙබ් පේජ් එකේ එන popup එකක් නෙවෙයි එක windows වලින් එන popup එකක් , මේ windows popup එකේ තියෙන button  අපිට selenium වලින් click කරන්න හිතන්නවත් බෑ මොකද ඒවගේ id , name , xpath අපිට ගන්න විදිහක් නැ .

ඒ උනාට මට දැන් තියෙනවා sikulix කියන API එක , එක use කරලා මම දැන් කරන්න යන්නේ මෙන්න මෙහෙම වැඩක් 

1.  මම sikulix වලට කියනවා මෙන්න
මෙතන මම upload කරන්න ඉන්න image එකේ path එක type කරන්න කියලා 

2. ඊට පස්සේ මම කියනවා මෙන්න මේ
එක click කරන්න කියලා 


ඔය දෙක හරියට උනා නම් අපේ file එක upload  වෙනවා 

ඔක්කොටම කලින් මම upload කරන්න ඉන්න file එක මම මගේ project එක ඇතුලෙම uploads කියල directory එකක් හදල එක ඇතුලට දාගෙන ඉන්නවා (මේක කරන විදිහ කලින්  පොස්ට් එකේදී කිව්වා )

ඊට පස්සේ මම මගේ test එක ඇතුලේ මුලින්ම Sikulix API එකෙන් object එකක් හදාගන්නවා මෙන්න මෙහම (screen  කියලා )





සයිට් එකට ගිහින් Drop file here or click to upload. (5GB max) කියන තැන click කරන කම් දැන් Script එක හරි 

හරි දැන් මට ඉස්සලම ඕන මෙන්න
මෙතන මම upload කරන්න ඉන්න image එකේ path එක type කරන්න කියලා 

එකට මම කරන්නේ මට type කරන්න ඕන තැන මම screenshot එකක් අරගන්නවා 


මේ විදිහට  ඊට පස්සේ මේක මම මගේ project එක ඇතුලෙම screenshots කියලා අලුත් directory එකක් හදල save කරනවා මෙන්න මෙහම 




දැන් මම code එක ලියනවා මෙන්න මෙහම 




* මෙතන මේ මම find එක ඇතුලේ string එකක් විදිහට දීල තියෙන්නේ 

මෙන්න මේ image එකේ path එක 

* find එක යටින් මේ විදිහට රතුපටට error එකක් අවොත් find එක උඩ click කරලා ALT +ENTER  click කරන්න එතකොට ඒවි මෙන්න මෙහම popup එකක් එකෙන් පලවෙනි එක තෝරාගන්න 



හරි ඔය මම කිව්වේ sikulix වලට 
ඔහොම image එකක් තියෙන තැනක් හොයාගන්න කියලා (find )

ඊට පස්සේ මම කියනවා ඒ හොයාගත්ත තැන මම upload කරන්න ඉන්න image එකේ path එක type කරන්න කියලා මෙන්න මෙහෙම 


(මතක තියාගන්න find එකට දෙන්නේ type කරන්න ඕන තැන image එකේපාත් එක 
ඒ කියන්නේ මේක 
)

(type එකට දෙන්නේ ඔයා upload කරන්න ඉන්න image එකේ path එක  ඒ කියන්නේ 


මේක )

(ඔක්කොම copy path ගන්න copy relative path ගන්න එපා )

හරි දැන් ඊළගට කරන්න තියෙන්නේ 

button එක click කරන එක 

එකටත් මම මුලින්ම  button එකේ screenshot එකක් අරන් මම මගේ project එකේ save කරගන්නවා 


ඊට පස්සේ මම code එක ලියනවා ඒ open button එක වගේ  image එකක්  find කරන්න කියලා 

ඊට පස්සේ ඒ image එක උඩ click කරන්න කියලත් 



එච්චරයි 

ඔක්කොම ඉවර උනාම ටෙස්ට් එක මේ විදිහට තියෙන්නේ ඕන 


(සමහර screenshot වල driver.findElement(By.id("upload-window")).click(); කියන ස්ටෙප් එක මගේ අතින් මගහැරිලා තියෙනවා 👶)

වැඩේ ඉවරයි ..



දැන් run කරලා බලන්න තියෙන්නේ 



run කරනකොට මතක තියාගන්න ඕන දෙයක් තමයි sikulix use කරලා තියෙන නිසා run කරාට පස්සේ mouse එකෙන් කරන වැඩ ඔක්කොම අපි නවත්තන්න ඕන මොකද නැත්තම් sikulix වලට හරි තැන හොයාගන්න හරි තැන type කරන්න බැරි වෙනවා . 

✌              💆                    ✌

Tuesday, March 5, 2019

File Uploading Using Selenium

File Uploading Using Selenium




කලින් පාඩම් ටික බැලුව නම් මේ වෙනකොට Selenium පාවිච්චි කරලා ලොගින් ස්ක්‍රිප්ට් එකක් වගේ ලියාගන්න හැකියාව ඇති කියලා මම හිතනවා 

හැබැයි අපි ඇත්තටම සිස්ටම් එකක් ගත්තම එකේ තියෙන්නේ ලොගින් එකක් විතරක් නෙවෙයි  , සිස්ටම් එක ඇතුලට ගියාම අපිට සිද්ද වෙනවා එක එක වෙබ් එලිමන්ට් එක්ක වැඩ කරන්න 

Ex - File Upoad, Drag and Drop, Slider... වගේ දේවල් 

Selenium අපිට කෙලින්ම File Upload, Drag and Drop, Slider Handle  කරන්න විදිහක් දීල නෑ , ඒ හින්ද අපිට සිද්ද වෙනවා ඒවා කරන්නේ කොහොමද කියන එක එකින් එකට බලන්න 

අද මම කරන්න යන්නේ ඒ අතරින් File Upload එක 

මේක කරන්න පුළුවන් විදි දෙකක් තියෙනවා 
1. Sendkeys 
2. Sikulix 

අද අපි කරන්න යන්නේ ලේසිම විදිහ Sendkeys වලින් File එකක්  Upload කරන විදිහ 

Sendkeys කිව්වම දැන් ඔයාලා දන්නවා අපිට Sendkeys වලින් කරන්න පුළුවන් මොකක් හරි text field එකක ටයිප් කරන එක කියලා 

අපි කලින් example වල Username එක Password එක ඒ ඒ field වල type කර ේ මෙන්න මේ Sendkeys කියන Command එක Use කරලා 

හරි එතකොට Sendkeys තියෙන්නේ මොකක් හරි field එකක type  කරන්න නම් කොහොමද අපි මෙන්න මේ Sendkeys වලින් File එකක ් Upload  කරන්නේ ?

https://davidwalsh.name/demo/multiple-file-upload.php මෙන්න මේ  සයිට් එක ගියාම දකින්න පුළුවන් File එකක්  Upload  කරන්න තියෙන Upload Button එකක් 



මුලින්ම මොන දේ කරන්නත් කලින් මැනුවල් File  එකක් Upload  කරලා බලන්න අපි Automate  කරන්න යන වැඩේ Manual කරන්න පුලුවන්ද කියලා 


මේ System එකේ විදිහට මැනුවල් file එකක් upload කරාම ඒ upload  කරපු ෆයිල් එකේ නම ඉස්සරහින් display  වෙන්න ඕන , 
හරි 

මැනුවල් කරාම වැඩේ වෙනවා ඒ කියන්නේ අපිට මේක automate කරන්න පුළුවන් 


දැන් අපි මේකට script එක ලියමු (වීඩියෝ එකක් අන්තිමටම තියෙනවා )

මුලින්ම Intelij Open කරලා අපි එකෙන් Maven Project එකක් හදාගන්නවා 

මම මුලින්ම කරන දේ තමයි මට Automation එක ඕන වෙන Dependencies ටික දාගන්න එක 

Intelij වලින් Project එකක් හදන විදිහ Selenium Dependency දාන විදිහ තියෙනවා මේ පොස්ට් එකේ (Selenium WebDriver (03 කොටස))

කලින් නම් මම දැම්මේ Selenium Dependency එක විතරයි හැබැයි මම අද ඉදන් දානවා TestNG  Dependency එකත් මගේ project එකට එකට හේතුව මම මේ පොස්ට් එකේ කියල තියෙනවා (TestNG කොහොමද Use කරන්නේ ?)



මෙන්න මේ විදිහට තමයි ඔක්කොම ටික කරගත්තට පස්සේ මගේ Project එක පෙන්නන්නේ 
(Project එකේ නම Blog  කියල මම දුන්නා Project එකට Dependencies දෙකක් දල තියෙනවා (Selenium , TestNG ) සහ  Project එකේ drivers කියලා ෆෝල්ඩර් එකක් හදල එකට ChromeDriver .exe එක දාල තියෙනවා )

මේ ටික ඔක්කොම මම  Selenium WebDriver (03 කොටස) සහ TestNG කොහොමද Use කරන්නේ ? කලින් පොස්ට් වල කියල තියෙනවා

ඊට පස්සේ මම හදාගන්නවා Class එකක් FileUpload  කියලා , මේ ච්ලස්ස් එක ඇතුලේ මම Annotations 3ක් දල තියෙනවා මෙන්න මෙහෙම 



මේ දල තියෙන Annotations  වලින් (Beforemethod , Test , AfterMethod ) වෙන්නේ මොකක්ද කියන එක ඒ  Annotations දාන විදිහ   මම TestNG කොහොමද Use කරන්නේ ?  කියන Post එකේ කියල තියෙනවා 

මුලින්ම මම Beforemethod එක ඇතුලේ ලියනවා Browser එක Open කරන code එක Browser එක Maximize කරන Code එක ඊට අමතරව Browser එක Close කරන Code එක මම ලියනවා AfterMethod එක ඇතුලේ 


ඊට පස්සේ මම Test එක ඇතුලේ ලියනවා File එක Upload කරන්න තියෙන සයිට් එකට යන code එක මුලින්ම 


දැන් අපිට තියෙන්නේ File එක Upload කරන්න තියෙන Code එක ලියන්න විතරයි 

එත් මම මෙතන පොඩි වැඩක් කරනවා එක තමයි අපි Upload කරන්න හදන File එක මම මගේ Project එක ඇතුලෙම තියාගන්න තැනක්හ හදනවා එකට හේතුව තමයි අපි Project එකට Use කරණ හැම දේම Project එක ඇතුලෙම තියාගන්න එක Best Practice එකක් හින්දා (මේකම අපි කරා ChromeDriver .exe එක තියාගන්න drivers කියලා Directory එකක් හදපු වෙලෙත් )

එකට මම කරන්නේ Project Name එක උඩ right click කරලා New ගිහින් හදනවා Directory එකක් uploads කියලා ඊට පස්සේ ඒ Folder එක ඇතුලට මම Upload කරන්න ඉන්න Image එක copy කරලා ගෙනත් දන්වා 



දැන් තියෙන්නේ Upload code එක ලියන්න 

මුලින්ම Upload Button එක Inspect කරලා බලනවා අපිට ගන්න පුළුවන් Name , ID  එකක් තියෙනවාද කියලා 


Choose File කියන Button එක Inspect කරාම අපිට ගන්න පුළුවන් ඒ Element එක අදුනගන්න Name එකකුයි ID එකකුයි 

Name  - filesToUpload 
ID  - filesToUpload 

මම මේකෙන් Name කියන Attribute එක Use කරනවා මගේ Code එකට 


හරි element එක අදුනගත්තා ඊළගට මම කිව්වා අපි මේ File Upload එක කරන්නේ Sendkeys කියන Command එක Use කරලා කියලා ඒ හින්දා element එක අදුනගත්තාට පස්සේ මම Command එක විදිහට දෙනවා Sendkeys කියන Command එක 


දැන් හරි , කලින් නම් අපි Sendkeys කියල දුන්නම එක ඇතුලේ දෙනවා අපිට Type වෙන්න ඕන දේ , (Username  Password වලට කරපු දේ මතක ඇති )

එත් මෙතන ඕන අපිට මොකුත් type වෙන්න නෙවෙයි File එකක් Upload වෙන්න 

ඒ හින්දා මම මෙතනට දෙන්නේ මම Upload කරන්න ඉන්න File එකේ පාත් එක 



කොහොමද මේ පාත් එක ගන්නේ 

ඔයාගේ project එකේ තියෙන upload කරන්න ඉන්න image එක උඩට ගිහින් right click කරලා copy path කියන එක අරගෙන ඒක Sendkeys වල ඇතුලට දෙන්න ඕන 



මතක තියාගන්න ඕන දේවල් දෙකක් තියෙනවා මෙන්න මේ පාත් එක 

* ගන්න ඕන Copy Path  කියන එක Copy Relative Path ගත්තොත් හරියන්නේ නෑ 
* path එක Sendkeys ඇතුලට දෙන්න ඕන String Parameter එකක් විදිහට ඒ කියන්නේ " " දෙකක් ඇතුලට 


("" එක type කරපු ගමන්ම Intelij වලින් ...charSequences: කියන එක auto type වෙනවා, ඒක මැනුවල් ගහන්න ඕන නැ   )

වැඩේ ඉවරයි 

Run කරලා බලන්න තියෙන්නේ දැන් , Run කරන්න  කලින් afterMethod එක ඇතුලේ තියෙන drver .close () කෝඩ් ලයින් එක Comment කරලා ඉන්න නැත්තම් අපිට බලාගන්න වෙන්නේ නෑ හරියටම file එක upload උනාද කියන එක මොකද browser එක එකපාරම close වෙන හින්දා 



file එක හරියට upload උන නම් errors එන්නත් බෑ  ChooseFile කියන Button එක ඉස්සරහ ඔයා upload කරපු file එකේ නම වැටෙන්නත් ඕන මෙන්න මේ විදිහට 




වැදගත්ම දේ මේකයි 

අපිට මේ Sendkeys කියන Command එක Use කරලා Upload කරන File එකේ Path එක දීලා Selenium වලින් File එකක් Upload කරන්න පුළුවන් වෙන්නේ 

ඔයා automate කරන file upload element එකේ  input type එක file උනොතින් විතරයි 




පහලින් තියෙන්නේ තවත් එහෙම image upload එකක් තියෙන site එකක් 



ඒ තියෙන Choose File කියන Button එක Inspect කරාම තියෙන්නේ <a href > tag එකක් (input type එක file නෙවෙයි )

අන්න ඒ වගේ වෙලාවලදී ඔයාට Sendkeys කියන Command එක Use කරන්න බැරි වෙනවා 

ඒ හින්දා තමයි මම කිව්ව අනිත් විදිහ වෙන Sikulix use කරන්න වෙන්නේ 

ඒක අපි ඊලග post එකෙන් බලමු ..

මේ කරපු  ටික video  එකකින් 











Tuesday, July 24, 2018

TestNG කොහොමද Use කරන්නේ ?

අද පාඩම...

TestNG ගැන 


හරි මුලින්ම මොකක්ද මේ TestNG  කියන්නේ ?

TestNG  කියන්නේ Annotation Based  Unit  Testing  Framework  එකක්

මෙන්න මෙහෙමයි..

පහල Screenshot එකේ තියෙන්නේ chrome browser එක Open කරලා https://www.phptravels.net/admin කියන වෙබ් සයිට් එකට ගිහින් එකේ තියෙන ලොගින් එකට ලියපු ටෙස්ට් script එක 

මේකේ පෙන්වා ඇති මම test 4ක් ලියල තියෙනව 




Test  01 - Valid Username  එකයි Valid  Password එකයි  enter කරල ා ලොග් වෙන Test  එක 
Test  02 - Invalid Username  එකයි Invalid Password එකයි  enter කරල ා ලොග් වෙන Test  එක  
Test  03 - Valid Username  එකයි Invalid Password එකයි  enter කරල ා ලොග් වෙන Test  එක  
Test  04 - Invalid Username  එකයි Valid  Password එකයි  enter කරල ා ලොග් වෙන Test  එක  

සාමාන්යෙන් මෙතන මන් ලියල තියෙනවා ලොගින් එකක් ටෙස්ට් කරන්න ඕන  හැම Test  Case  එකක් වගේ

මෙතන තියෙන අවුල තමයි ඔයාලට පෙන්වා ඇති හැම Test Method එකේදිම මම
1. Webdriver Instance එකක් හදන Code එක WebDriver driver;
2. Browser  එක Maximize කරන Code එක driver.manage().window().maximize();
3. Browser එක Open කරන Code එක driver = new ChromeDriver();
4.සයිට් එකට යන Code එක driver.get("https://www.phptravels.net/admin");
5.Browser  එක Close කරන code එක driver.close();

කියන Code line පහ හැම test එකේදිම නැවත නැවත ලියලා තියෙනවා 

මෙන්න මේ හින්ද Code එක ටිකක් ලොකු වෙලා තියෙනවා වගේම code repetition එකත් සිද්ද වෙලා තියෙනවා 

මෙන්න මේ අවුල අකා මකා දමන්නයි Code  එක තව දුරටත් manage කරන්නයි  තමයි අර මම මුලින්ම කිව්ව Annotation Based  Unit  Testing  Framework එක උඅදව්වට එන්නේ 

එක වෙන්නේ මෙහෙමයි 

TestNG  කියන Annotation Based  Unit  Testing  Framework එකේ තියෙනව Annotation කියල ජාතියක් ඒවා තමා 


@Test 
@BeforeSuite
@AfterSuite
@BeforeTest
@AfterTest
@BeforeGroups
@AfterGroups
@BeforeClass
@AfterClass
@BeforeMethod
@AfterMethod


(තව තියෙනවා දැනට මුලිකවම ඕන වෙන ටික විතරක් බලමු )


මෙන්න මේ Annotation Use කරගෙන අපිට පුළුවන් අපේ Code  එකේ මම කලින් කිව්ව code repetition එක අඩු කරගන්න වගේම Code එක Manage කරගන්නත් පුළුවන් වෙනවා 

හරි පලවෙනි එක නම් දැනටම අපි නොදැනුවත්වම Use කරලා තියෙන්නේ @Test මොකක් හරි method එකකට උඩින් @Test  Annotation එක තියෙනවා කියන්නේ ඒ method එක Test method එකක් කියන එක , සාමාන්යෙන් ඔයාල දන්නවා ඇති අපිට java code එකක් run කරන්න ඕන නම් අපිට අනිවාර්යෙන්ම Main Method එකක් තියෙන්න ඕන කියන එක 


public static void main(String[] args) {   
}

එත් ඔයාගේ ඕනෑම method එකට උඩින්  @Test  Annotation එක තියෙනවා නම්  ඒ   method එක ඔයාට Main Method එකක් නැතුව run කරන්න පුළුවන් 

EX - 



මේකෙදි 

public static void main(String[] args) {   
}




කියන Main Method එක නැති උනත් අපිට මේ loginWithValidUsernameAndValidPassword කියන method එක run කරන්න පුළුවන් මොක්දට ඊට උඩින් @Test  Annotation එක තියෙන නිසා 


දෙවෙනි එක විදිහට මම ගන්නේ @BeforeMethod කියන Annotation එක නම දැක්ක ගමන්ම idea එකක් ගන්න පුළුවන් නේ , 

ඒ කියන්නේ මේ Annotation එකට යටින් තියෙන method එකේ තියෙන code එක හැම method එකකට කලින්ම Execute වෙනවා , හරියට නිකන් බත් කන්න කලින් අත් හෝදනවා වගේ 



දැන් තේරෙන්න ඕන වැඩේ @BeforeMethod කියන Annotation එක යටින් තියෙන Code line ටික තමා මුලින්ම Execute වෙන්නේ එහ්මත් නැත්තම් Run වෙන්නේ 

ඒ ටික ඉවර උනාම තමයි  @Test  Annotation එකට යටින් තියෙන Code line ටික  Execute වෙන්නේ

අත හෝදන්නේ 1 දී බත් කන්නේ 2 දී 

ඒ හින්ද 

1. Browser  එක Maximize කරන Code එක driver.manage().window().maximize();
2. Browser එක Open කරන Code එක driver = new ChromeDriver();
3.සයිට් එකට යන Code එක driver.get("https://www.phptravels.net/admin");

කියන code line ඔක්කොම ටික මම ගලවල දැම්ම @BeforeMethod කියන Annotation එක යටින් තියෙන method  එකට ,  දැන් 

1. Browser  එක Maximize කරන Code එක driver.manage().window().maximize();
2. Browser එක Open කරන Code එක driver = new ChromeDriver();
3.සයිට් එකට යන Code එක driver.get("https://www.phptravels.net/admin");

ටික ඔක්කොම @BeforeMethod කියන Annotation එක යටින් තියෙන method  එකේ දී වෙන හින්ද  මම 
@Test  Annotation එකට යටින් තියෙන Code එකෙන් ඒවා ටිකComment  කරලා දැම්ම 

Webdriver Instance එකක් හදන Code එක WebDriver driver;

එක මොකද උඩින්ම දල තියෙන්නේ කියල හිතෙන්න පුළුවන් කාට හරි, එකට හේතුව තමයි Webdriver Instance එක අපි හැම තැනම Use කරන නිසා එක Public  Access කරන්න පුළුවන් Place එකක තිබ්බ ා, එකත් අපි 
@BeforeMethod එක ඇතුලට දැම්මොත් අපිට ඒ Webdriver Instance එක @BeforeMethod එකට පිටින් කිසිම තැනකදී Access කරන්න බැරි වෙනවා , මම කලින් පොස්ට් වල කිව්වා Webdriver Instance නැතුව අපිට click කරන්න Type කරන්න මොකුත් කරන්න බැරි වෙනවා ඒ  හින්දා , හැම ටෙස්ටෙකකටම Access කරන්න පුළුවන් විදිහට ඇනයක් ගහල උඩින්ම තිබ්බා Webdriver Instance එක 


තුන්වෙනි එක විදිහට මම ගන්නේ @AfterMethod කියන Annotation එක කලින් එක බත් කන්න කලින් අත හේදුව එක නම් මේක බත් කවට පස්සේ අත හෝදන එක වෙන්න ඕන 

ඒ කියන්නේ @BeforeMethod එකේ තියෙන ටික වෙලා @Test එකේ තියෙන ටිකත් උනාට පස්සේ තමයි මේ @AfterMethod කියන Annotation එකට යටින් තියෙන Code  Line ටික Execute වෙන්නේ 




දැන් තේරෙන්න ඕන ගොනාට වගේ 

මේක තමා Execution Order එක 

1.BeforeMethod -- කෑමට පෙර අත හේදීම  
2.Test  -- කෑම 
3.AfterMethod -- කෑමට පසු අත හේදීම 

මම @AfterMethod කියන Annotation එකට යටින් දැම්මා  Browser close වෙන එක මොකද Test එක ඉවර උනාම අපිට වෙන්න ඕන Browser එක close වෙන එක නිසා , එහම දාල මම driver .close (); එක Test එක ඇතුලෙන් Comment කරල  දැම්ම

කලින් තිබ්බ  සම්පුර්ණ code එක ඔය විදිහටTestNG  Annotation  දාලා හරිගස්සුවම මෙන්න මෙහෙම දිස් වෙයි 



දැක්ක නේ දැන් අපේ test එක ඇතුලේ තියෙන්නේ test එකට ඕන කරන ඒවා විතරමයි 

Test එකට කලින් වෙන්න ඕන, Browser එක Open කරන එක Site එකට යන එක Browser එක Maximize කරන එක එක තැනක විතරයි තියෙන්නේ මුළු project එකටම ඒ @BeforeMethod එක ඇතුලේ 


Test එක ඉවර උනාම වෙන්න ඕන, Browser එක Close කරන කරන එකත්  එක තැනක විතරයි තියෙන්නේ මුළු project එකටම ඒ @AfterMethod එක ඇතුලේ 

@Test  එක ඇතුලේ තියෙන්නේ අත්තටම Test එකදි වෙන්න ඕන ඒවා ටික විතරයි 

Test එක හරියට ලියලා Public Class  LoginTest () කියන class name එක ගාව තියෙන කොලපාට run icon එක click කරොත් බලාගන්න පුළුවන් කොහොමද code එක run වෙන පිළිවෙල කියලා 

මේ වීඩියෝ එකෙන් බලාගන්න පුළුවන් කොහොමද මේ project එක හදන්නේ කියන එක 





මම මේ Script එකේ Username  සහ Password  එක දන එක කරේ නෑ (ඒ දෙක ඒ වෙලේ අමතක උන හින්ද 😂)

Valid Username - admin@phptravels.com
Valid Password - demoadmin

invalid ඒවා තමන්ට කැමති විදිහට දාගන්න පුළුවන් ඉතින් 

මම කරපු project එක Download කරගන්න පුළුවන් පහල තියෙන ලින්ක් එකෙන් 

https://bitbucket.org/ssluni/testng-annotations/downloads/

දැන් අර මම මුලින් කිව්ව code repetition එක වගේම Code එක Manage කිරීමත් සිද්ද වෙලා තියෙනවා අපේ code එක ඇතුලේ 

අනිත් Annotation ගැන ඒවා Use වෙන වෙලාවට ලස්සනට පැහැදිලි කරන්නම් 

මෙන්න ඔක්කොම Annotation ගැන අදහසක් ගන්න ලින්ක් එකක් 
http://testng.org/doc/documentation-main.html#annotations

මෙන්න TestNG ගැන හොද විස්තරයක්

https://www.guru99.com/all-about-testng-and-selenium.html

අසා සිටිය  ඔබ සැමට ස්තුති...

ඊලග පාඩම Test එකක Result එක Assert කරගන්න විදිහ ගැන