Jumat, 03 April 2015

Akses Website Dengan Java Library

Kembali lagi dengan saya, kali ini saya akan mencoba membahas tentang bagaimana kita mengakses sebuah website mulai dari login dari website tersebut, kemudian mengambil data atau konten yang terdapat dari website tersebut dengan menggunakan Selenium Library di Java. Selenium Library adalah sebuah library yang awalnya diperuntukan untuk Java. Namun sekarang sudah mulai dikembangkan tidak hanya dipakai oleh Java, melainkan bisa oleh C#, Ruby, Python dan Javascript. Selenium ini juga sering disebut sebagai API's Webdriver, teman-teman dapat mendownloadnya di sini Selenium Webdriver.

Pada tutorial kali ini, saya akan menggunakan Java dalam penggunaan Selenium Library ini. Saya akan membuat simulasi mulai dari login sampai mengambil konten yang ada ketika sudah login. Website yang saya gunakan adalah website local buatan saya sendiri yang hanya sekedar untuk login saja. Mekanisme dari bagaimana kita bisa login adalah kita harus tahu dulu tag, id, class, atau name pada HTML, sesuai kebutuhan saja, tergantung element yang tersedia dari website tersebut.

Berikut adalah source dari halaman web saat akan login.

 <!DOCTYPE html>  
 <html>  
   <head>  
     <title>Reservasi/Login</title>  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/bootstrap/css/bootstrap.min.css" />  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/jquery-ui/css/redmond/jquery-ui-1.9.0.custom.css" />  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/main.css" />    
   </head>  
   <body>   
     <div class="layout">  
       <div class="top_side">  
       </div>  
       <div class="left_side">  
       </div>  
       <div id="center_side">        
         <form method="POST" action="http://localhost/reservasi/login/sign" id="frm_login" name="frm_login">  
   <h3>  
     Login  
   </h3>  
   <label for="username">Username</label>  
   <input type="text" name="username" id="username" class="span3" />                
   <label for="password">Password</label>  
   <input type="password" name="password" id="password" class="span3" /> <br />  
   <input type="submit" class="btn" value="LOGIN" id="btnlogin" name="btnlogin" />  
   <input type="reset" class="btn" value="RESET" id="btnreset" name="btnreset" />  
 </form>  
       </div>  
       <div class="left_side">  
       </div>  
       <div class="bottom_side">  
         <h5>&COPY; Copyright by Satrio Wicaksono</h5>  
       </div>  
     </div>      
   </body>  
 </html>  

URL dari halaman tersebut adalah http://localhost/reservasi/login. Perlu kita perhatikan dari source halaman web login tersebut adalah element input yang ada pada element form, kita akan menggunakan tag id untuk setiap element input. Kita menggunakan id username, password dan btnlogin yang nantinya akan kita panggil pada program Java kita. Berikut adalah code dari program Java dengan penggunaan Selenium Library.

1:  package grabweb;  
2:  import org.openqa.selenium.By;  
3:  import org.openqa.selenium.WebDriver;  
4:  import org.openqa.selenium.WebElement;  
5:  import org.openqa.selenium.htmlunit.HtmlUnitDriver;  
6:  public class GrabWeb {  
7:    public static void main(String[] args) {  
8:       WebDriver driver = new HtmlUnitDriver();  
9:       driver.get("http://localhost/reservasi/login");  
10:      WebElement eUsername = driver.findElement(By.id("username"));  
11:      WebElement ePassword = driver.findElement(By.id("password"));  
12:      WebElement eLogin = driver.findElement(By.id("btnlogin"));  
13:      eUsername.sendKeys("admin");  
14:      ePassword.sendKeys("admin");  
15:      eLogin.submit();  
16:      WebElement eMessage = driver.findElement(By.tagName("h3"));  
17:      System.out.println(eMessage.getText());  
18:      driver.quit();  
19:    }  
20:  }  

Pada baris 8 adalah inisialisasi pembuatan object webdriver, kemudian baris 9 untuk menyambungkan program kita untuk bisa mengakses sebuah halaman website yang kita inginkan, pada tutorial ini halaman website yang kita akan coba adalah http://localhost/reservasi/login. Pada baris 10-12 adalah pengambilan element berdasarkan id dari web tersebut. Baris 13 adalah menginputkan element input yang memiliki id username dengan string "admin", begitu juga dengan baris 14. Lalu pada baris 15 adalah seolah-olah kita melakukan klik button submit dengan id yaitu btnlogin tadi. Kemudian setelah login entah berhasil atau gagal, akan melanjutkan ke baris 16 dengan mengambil element yang ada pada halaman selanjutnya setelah login. Element yang diambil kali ini berdasarkan tag name, yaitu tag name H3. Untuk lebih jelasnya, berikut adalah source halaman web setelah login berhasil

 <!DOCTYPE html>  
 <html>  
   <head>  
     <title>Reservasi/Login</title>  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/bootstrap/css/bootstrap.min.css" />  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/jquery-ui/css/redmond/jquery-ui-1.9.0.custom.css" />  
     <link rel="stylesheet" type="text/css" href="http://localhost/reservasi/assets/main.css" />    
   </head>  
   <body>   
     <div class="layout">  
       <div class="top_side">  
       </div>  
       <div class="left_side">  
       </div>  
       <div id="center_side">        
         <h3><marquee> Selamat datang admin</marquee></h3><form method="POST" action="http://localhost/reservasi/login/signout" id="frm_logout" name="frm_logout">    
   <input type="submit" class="btn" value="LOGOUT" id="btnlogout" name="btnlogout" />    
 </form>      </div>  
       <div class="left_side">  
       </div>  
       <div class="bottom_side">  
         <h5>&COPY; Copyright by Satrio Wicaksono</h5>  
       </div>  
     </div>      
   </body>  
 </html>  

Jika login berhasil, maka akan mengambil konten element dengan tag name H3 dari halaman tersebut. Maka program akan menghasilkan output "Selamat datang admin". Namun jika login gagal, maka saya membuat halaman web tersebut redirect kembali ke halaman login lagi dan program akan menghasilkan output "Login".

Kenapa saya memilih menggunakan Selenium Library ini, padahal Java sendiri sebenarnya memiliki fungsi atau kelas yang serupa dengan library ini, itu karena menurut saya penggunaannya lebih mudah dan Selenium ini juga dapat mengambil sebuah element html seperti button yang mana button tersebut tidak memiliki id atau name atau class, melainkan hanya memiliki sebuah value tag dari element input, namun Selenium dapat mengakses atau mengambil button tersebut. Syntaxnya kurang lebih seperti ini : WebElement eSubmit = driver.findElement(By.xpath("//input[@value='LOGIN']"));  Itulah salah satu kedahsyatan Selenium Library.

Cukup sekian dari saya, semoga bermanfaat dan terimakasih.

Tidak ada komentar:

Posting Komentar