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  එකකින්