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 කරන්න බැරි වෙනවා . 

✌              💆                    ✌

0 comments:

Post a Comment