Saturday, June 16, 2018

Login Automation Script With Download Browser Drivers Automatically to Project



හරි අද කරන්න යන්නේ මෙන්න මේ http://opensource.demo.orangehrmlive.com/ එකේ ලොගින්
එකට පොඩි test automation ස්ක්‍රිප්ට් එකක් ලියන්න

අද ලියන ස්ක්‍රිප්ට් එක දැනට ලියන්න  පුළුවන් උපරිමෙන්ම හොදට ලියන්න බලමු අපි
(අලුත්ම වැඩ කෑලි ටිකක් දාන්න යන්නේ Automatically Download Browser Drivers )

හරි මුලින්ම InteliJ IDEA  open කරගන්න




හරි IDEA open උනාට පස්සේ

File → New → Project  ගන්න

එතකොට එන මේ view  එකෙන් Maven select කරලා Next  කරන්න




ඊළගට එන්නේ මේ view එක එකේ GID එකයි AID එකයි කොටලා Next කරන්න



මම GID එක විදිහට දීලා තියෙන්නේ GID එක දෙන විදිහ ඒ කියන්නේ

com.companyname.projectname  (ඔක්කොම සිම්පල් වලින් )

Ex:- ඔබ වැඩ කරන්නේ xyz කියලා company එකකට කියලා හිතපන්කෝ , ඒ xyz company එකේ තියෙන
project බරගනකින් උබ වැඩ කරන්නේ ohrmp කියන project එකේ නම් GID එක වෙන්නේ

com.xyz.ohrmp

එතකොට AID  එක වෙන්නේ only project name  ඒ කියන්නේ ohrmp විතරයි

මෙන්න මෙහම


එහම කරලා නෙක්ස්ට් කරන්න එතකොට එන view එකේ project name එක auto fill වෙලාම එයි එකේ
ඔක්කොම සිම්පල් වලින් එන්නේ project name එකේ  පලවෙනි අකුර කැපිටල් කරාම ලයින් නේ,
ඒ හින්දා එක විතරක් කරලා ෆිනිෂ් කරන්න

ෆිනිෂ් කරපු  ගමන් ම එයි දකුණු පැත්තේ පහලින් මෙන්න මෙහම


ඔකේ Enable Auto - Import එක click කරන්න

මෙන්න මෙහම වෙන්න ඇති පෙන්නනවා ඇත්තේ දැන් view එක



ඔකේ මන් රතු පාටින් මාර්ක් කරලා තියෙන එක click කරලා පproject එක expand කරාම
මෙන්න මෙහම පෙන්නයි


හරි දැන්  කෝඩ් එක ලියන්න ඕන කරන බඩු ටික ගන්න යන්නේ

සෙරෙප්පු දෙක දාගෙන යන්න https://mvnrepository.com/ එකට
ඕක තමයි අපේ බඩු ගන්න තියෙන super මාර්කට් එක

ඔන්න හැම automation script එකකටම ඕනම  කරන බඩු ලිස්ට් එක , කොහේ හරි ලියන් හිටියට පාඩු නෑ
  1. Selenium java
  2. Testng
  3. Webdriver Manager (අලුත්ම එක , මේක තමයි රසම එක )

හරි https://mvnrepository.com ගිහින් ඔය එකෙන් එක Search කරන්න ඕන , මුලින්ම

Selenium Java කියල කොටලා search button එක click කරන්න


එකේ මන් ඔය Highlight කරලා තියෙන එක උඩින් click කරාම  එයි මෙහම view එකක් ,
මේකේ පෙන්නන්නේ මෙච්චර කල් ආව selenium java versions  
දැන් අපි කරන්න ඕන මේ ලිස්ට් එකේ තියෙන උඩම එක click කරලා (3.12.0) එකේ දෙන code එක copy
කරගන්න එක , copy කරන්න ඕන නෑ click කරපු ගමන්ම කෝඩ් එක උඩ ඒක automatically copy වෙනවා





අපි open කරගත්ත project එකේ ඇති pom.xml කියලා file එකක්
ඒක ඩබල් ක්ලික් කරාම මෙහෙම එකක් intelij එකේ දකුණු පැත්තෙන් open වෙයි



ඔන්න මේ XMl ෆයිල් එකට තමයි අපි කොපි කරගත්ත කෝඩ් එක දාන්න ඕන

ඒක දන්නේ මෙන්න මෙහෙම

<version>1.0-SNAPSHOT</version>

එකට යටින් ඔයාලා open කරන්න ඕන
<dependencies > කියලා tag එකක් open කරපු ගමන්ම එකේ close ටැග් එක automatically වැදෙයි
අන්න ඒ open tag එකයි close tag එකයි අතර පොඩි space එකක් හදාගෙන
අර copy කරගත්ත එක එතනට paste කරන්න එතකොට මෙන්න මෙහම දර්ශනය වෙයි


ආයිත්  ගිහින් https://mvnrepository.com/ එකට search කරන්න
list එකේ තිබ්බ දෙවෙනි item එක TestNG

එකත් අර විදිහටම එන ලිස්ට් එකෙන් පලවෙනි එක තෝරාගෙන
එකේ අලුත්ම version එක(6.14.3) අරගෙන එකේ තියෙන code කැල්ල copy කරගෙන ඇවිල්ලා
දාන්න අර කලින් එක දැම්ම තැනට පහලින් මෙන්න මෙහම





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

ඉස්ස්සර අපි  automation script එකක් ලියනකොට එක එක browser එකට අදාල වෙන driver එකක් download
කරගෙන project එකට දාන්න ඕන නැත්තම් අපිට බෑ ඒ අදාල browser එක open කරගන්න

(මම මේක ගැන කලින් පොස්ට් එකක පැහැදිලිවම කිව්වා )

එත් දැන් මේ අපි ගන්න ඉන්න අයිටම් එක හින්ද
අපිට එහම driver එකක් download කරලා project එකට දාගන්න ඕන වෙන්නේ නෑ ,
වැඩේ තවත් ලේසි වෙලා මේකෙන් වෙන්නේ අපි scrip එක ලියල run කරනකොට
අදාල driver එක download කරගන්නවා.
එක වෙන විදිහ බලමු පස්සේ දැන් ගහින් අර විදිහටම එක කඩෙන් ගන්න තියෙන්නේ




ඔක්කොම අයිටම් ටික project එකට දාගත්තම මෙන්න මෙහම පෙන්නයි



හරි දැන්

මුලින්ම project view එකේ src එක expand කරලා එකේ test එක expand කරලා
එකේ තියෙන java එක right click කරලා හදන්න අලුත් class එකක් LoginTest  කියලා
(main එකේ නැතුව test එකේ මොකද class එක හදන්නේ කියලා කලින් පොස්ට් එකක කියලා දුන්නා මන් )


හරි දැන් ඒ හදාගත්ත class එක ඇතුලේ මුලින්ම කරන්න ඕන Selenium Webdriver එකෙන් instance එකක් හදාගන්න එක ,
සරලව කිව්වොත් මේ selenium webdriver  එකේ තමයි තියෙන්නේ අපිට ඕන කරන ඔක්කොම code ,
ඒ කියන්නේ අපිට browser එක open කරගන්න site එකකට යන්න මොකක් හරි type කරන්න මොකක් හරි මකන්න
මොකක් හරි click ඕන කරන ඔක්කොම code ටික තියෙන්නේ selenium webdriver එක ඇතුලේ  
ඒ හින්ද තමයි අපිට ඕන වෙන්නේ මේකෙන් instance එකක් අපේ project එක අතිලේ හදාගන්න ,
එතකොට අපිට පුළුවන් ඒ instance එක හරහා අපිට ඕන වැඩ ටික කරගන්න

මම driver කියාලා instance එකක් හදාගන්නවා webdriver එකෙන් මෙන්න මෙහම


දැන් අපිට පුළුවන් driver කියන එක හරහා Webdriver  එකේ තියෙන ඕනෑම code එකකට කතා කරලා වැඩක් කරගන්න (අපි කඩෙන් ගත්ත පලවෙනි බඩුවෙන් තමයි මෙන්න මේක කරගත්තේ )

හරි ඊළගට ඒ හදාගත්ත instance එක යටින් මම

@Test කියලා annotation එකක් ගහනව මේක එන්නේ අපි කඩෙන් ගත්ත දෙවෙනි බඩුවෙන් ,
මෙහම @Test කියල annotation එක දාපු ගමන්ම එකට යටින් අනිවාර්යෙන්ම method එකක් ලියන්න ඕන මෙන්න මෙහම


මම මෙතන ලියල තියෙන method එක තමයි validLogin කියන method එක, මම ඒ method එක ඇතුලේ කරන්න ඉන්නේ අර මම මුලින්ම කිව්ව site එකට (http://opensource.demo.orangehrmlive.com/ )
ලොග් වෙන එක

හරි දැන් ඒ වැඩේ කරන්න යන්නේ මුලින්ම ඕන අපිට browser එක open කරගන්න නේ
අන්න එකට මම අර 3න වෙනි අයිටම් එක use කරනවා මෙන්න මෙහම


දැක්කද මේකෙන් කියන්නේ chrome browser එක ලෑස්ති කරන්න කියලා open කරන්න, හරි සිම්පල්  , ඕන firefox open කරගන්න නම් දාන්න ඕන

WebDriverManager.firefoxdriver().setup();

කියලා , internet explorer නම්  

WebDriverManager.iedriver().setup();

Edge  නම් (Windows 10)

WebDriverManager.edgedriver().setup();

හැබැයි එක පාරකට එකයි (එක බ්‍රොව්සෙර් එකයි open කරන්න පුළුවන් )

ඊලග කෝඩ් ලයින් එකෙන් මන් කරන්න හදන්නේ ලෑස්ති කරගත්ත browser එක open කරන එක

ඊට කලින් කඩෙන් ගෙන්වා බඩු වල පාවිච්චිය කොහොමද බලමු පොඩි ෆොටෝ කෑල්ලකින්


තේරුණා නේ දැන් ගේනව ඒවගෙන් අපතේ යමක් උනේ නෑ ඔක්කොම පාවිච්චි කර කියලා

හරි මන් කිව්වා  ඊලග කෝඩ් ලයින් එකෙන් මන් කරන්න හදන්නේ browser එක open කරන එක කියලා
එක කරන්නේ මෙන්න මෙහම




Selenium වල default  browser එකක් open වෙන්නේ ටිකක් පොඩියට ඒ හින්දා ඒක ලොකු කරගන්න
පොඩි code line එකක් මන් මෙහම ලියනවා


දැක්කද මම අර කලින් කිව්වේ “සරලව කිව්වොත් මේ selenium webdriver  එකේ තමයි තියෙන්නේ අපිට ඕන කරන
ඔක්කොම code ,ඒ කියන්නේ අපිට browser  එක open කරගන්න site එකකට යන්න මොකක් හරි type කරන්න
මොකක් හරි මකන්න මොකක් හරි click ඕන කරන ඔක්කොම code ටික තියෙන්නේ selenium webdriver එක
ඇතුලේ  ඒ හින්ද තමයි අපිට ඕන වෙන්නේ මේකෙන් instance එකක් අපේ project එක අතිලේ හදාගන්න ,
එතකොට අපිට පුළුවන් ඒ instance එක හරහා අපිට ඕන වැඩ ටික කරගන්න ”

දැක්කද දැන් ඒ කිව්වා විදිහට හදාගත්ත driver  කියන instance එක හරහා මම Webdriver එකට කව්වා
browser එක open කරන්න කියලා මුලින්, ඊට පස්සේ  ඒ instance එක හරහාම කිව්වා මන් browser එක maximize
කරන්න කියලත් , ඔය Chromedriver() සහ manage().window().maximize() කියන කෝඩ් තියෙන්නේ   
 Webdriver එක ඇතුලේ , ඒවාට කතාකරන්න කෙලින්ම බෑ එකට හදාගත්ත නියෝජිතයා තමයි driver කියන්නේ ,

හරි ඊළගට browser එක open කරගෙන කට අරන් බලා ඉදල හරියන්නේ නැ නේ ,
ඊළගට ඕන මම අර මුලින්ම කිව්වා site එකට යන්න, එක කරන්නේ මෙන්න මෙහම

driver.get("http://opensource.demo.orangehrmlive.com/");

දැනට තියෙන ටිකෙන් අපි script එක run කරාම ඔය වැඩ ටික හරියට උනා නම් අපි ඉන්නේ
මෙන්න මේ view එකේ ඒ කියන්නේ අදාල site එකට ඇවිල්ලා

දැන් ඊළගට කරන්න ඕන ඔය view එකේ තියෙන username  field එකේ username එකයි password field
එකේ password එකයි type කරලා login button එක click කරන එක

වැඩි කතා ඕන නැ browser එකෙන් http://opensource.demo.orangehrmlive.com/ site එකට manually ගියා ඉස්සලම ඕන කරන username ෆිඑල්ඩ් එක right click කරලා inspect element ගියා
එතකොට පෙන්නයි ඒ element එකේ ඔක්කොම විස්තර
(element catch කරන විදිහ මම කලින් පොස්ට් එකේ කියල තියෙන්නේ )



ඔන්න ඔය විදිහට , මම පහලින් දාන්නම් username ෆිඑල්ඩ් එකේ සම්පුර්ණ element එක

<input name="txtUsername" id="txtUsername" type="text" autocomplete="off">

මේ element එකේ තියෙනවා  id="txtUsername" කියලා කැල්ලක් ඒ කියන්නේ අපිට පුළුවන්
මේ view එකේ නැත්තම් මේ webpage එකේ username field එක uniquely identify කරගන්න මෙන්න මේ
 id="txtUsername" කියන එකෙන්, දැන් මට ඕන username field එකේ username එක type කරන්න නේ
අන්න එකට මම මේ  id="txtUsername" කියන එකත් use කරගන්නවා මෙන්න මෙහම

driver.findElement(By.id("txtUsername")).sendKeys("Admin");

දැක්කනේ මම කිව්වා කලින් විදිහටම driver කියන instance එකට id එක txtUsername කියන field එක හොයාගෙන
එකේ Admin කියලා type කරන්න කියලා , හරිම සිම්පල්

ඊළගට ඕන password field එකේ password එක type කරන්න නේ එකත් මේ විදිහමයි

ඉස්සලම inspect element යනවා



<input name="txtPassword" id="txtPassword" type="password">

මේකෙත් තියෙනවා id="txtPassword"කියල අන්න එක use කරගෙන
 password field එකේ password එක type කරන්නේ මෙන්න මෙහම

driver.findElement(By.id("txtPassword")).sendKeys("admin");

හරි ඊළගට ඕන ලොගින් button එක click කරන්න නේ එකටත් මුලින්ම inspecr element යනවා
ගහින් ගන්නවා ඒ element එකේ විස්තර


<input type="submit" name="Submit" class="button" id="btnLogin" value="LOGIN">

එකෙත් තියෙනවා id="btnLogin" එක use කරගෙන ලොගින් button එක click කරන්නේ මෙන්න මෙහම

driver.findElement(By.id("btnLogin")).click();

අන්තිමට
driver.close();

කියලා code line එකක් දාගන්න අන්තිමටම
මේකෙන් වෙන්නේ අදාල වැඩ ටික ඉවර වෙලා browser එක close වෙන එක

ඔක්කොම හරියට ලිව්වා නම් මෙන්න මෙම තියෙන්න ඕන කේක් ගෙඩිය


Public void validLogin() කියන මෙතඩ් නේම් එක ඉස්සරහ තියෙන
කොළ පට ඉතලේ click කරලා scrip එක රන් කරන්න පුළුවන් එතකොට browser එක
automatically open වෙලා  http://opensource.demo.orangehrmlive.com/ එකට ගහින් එකේ
automatically ම username එකයි password එකයි type කරලා ලොගින් button එකත් click කරලා
බ්‍රොව්සෙර් එක automatically ම close වෙලා යයි

මන් අනිත් browser වලටත් මේකම copy කරලා browser එක විතරක් කලින් කිව්වා විදිහට වෙනස් කරනවා
මෙන්න මෙහම



මන් රතුපාටින් කොටු කරලා තියෙන දේ හැමෝටම තේරෙනව වති
අපි උඩින් browser  එක මාරු කරා නම් යට driver = new කියලා දෙන browser එකත්
අනිවාර්යෙන්ම ඒ මාරු කරපු browser එකම වෙන්න ඕන

දැන් ඔක්කොම test තියෙනවා 4ක් මේ 4ම run කරන්න පුළුවන්
public class LoginTest කියන class name එකට වම පැත්තෙන් තියෙන කොලපාට රවුමයි ඉතලයයි click කරලා ,
එකක් ඉවර වෙලා අනිත් එක ලස්සනට රන් වෙයි

(මතක තියාගන්න ඔක්කොම browsers තමන්ගේ machine install වෙලා තියෙන්න ඕන )


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

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


ඊළගට මන් කරන්න ඉන්නේ code එක ලස්සනට manage කරන විදිහයි
Test script එකක් උනාම pass ද fail ද කියලා result එකක තියෙන්න එපයි අන්න ඒක ගන්න විදිහයි

එහෙනම් ජය ...