Python - Otomatisasi Peramban Web dengan Selenium Webdriver pada Linux


Tulisan ini merupakan kelanjutan dari tulisan sebelumnya mengenai otomatisasi peramban web dengan selenium dan bahasa pemrograman python. Perbedannya yaitu terletak pada sitem operasi dan webdriver yang digunakan. Kali ini kita akan menggunakan sistem operasi Linux dan Saya sendiri menggunakan Linux Mint 18.

Berbeda dengan Windows, pada Linux hampir semua distro sudah terpasang python secara default-nya, bisa dicek dengan menggunakan perintah berikut pada terminal.
python -V

Python - Automation Web Selenium

Karena python sudah terpasang, mari kita lanjut ke tahap berikutnya.

Instalasi Selenium
Seperti biasa, kita akan menginstalnya melalui pip. Jika pip belum terpasang, lakukan pemasangan terlebih dahulu sebagai berikut.
sudo apt-get install python-pip
Memasang selenium.
pip install selenium

Python - Automation Web Selenium


Instalasi Webdriver
Jika pada tulisan yang lalu kita menggunakan chromedriver, kali ini kita akan menggunakan geckodriver (firefox driver) biar beragam 😀. Geckodriver dapat diunduh pada laman berikut ini https://github.com/mozilla/geckodriver/releases, silahkan pilih versi yang sesuai dengan peramban web kita.
Karena Saya menggunakan firefox quantum versi 57.0.1, maka Saya unduh geckodriver terbaru yakni versi 0.19.1.

Ekstrak hasil unduhan dan salin ke direktori /usr/bin/. Jangan lupa sesuaikan direktori unduhan geckodriver tersimpan, dibawah ini contoh geckodriver tersimpan pada direktori Downloads.
sudo tar -zvxf ~/Downloads/geckodriver-v0.19.1-linux64.tar.gz -C /usr/bin/
Lakukan pengecekkan.
ls /usr/bin/ | grep 'geckodriver'
Hasilnya seperti berikut ini.

Python - Automation Web Selenium

Tes Otomatisasi
Kita akan melakukan tes otomatisasi masuk ke akun Gmail. Ingat ini hanya untuk tujuan belajar saja.
Sekali lagi  "for study purposes only".
Silahkan salin kode berikut ini.
#-*- coding: utf-8 -*-
#!/usr/bin/python
#------------------------------------------------
# mencoba otomatisasi login gmail
# for study purposes only
#------------------------------------------------

def loginGMail():
    from selenium import webdriver    # mengimpor selenium webdriver
    import time                       # mengimpor time (untuk jeda waktu)

    browser = webdriver.Firefox()     # memanggil Firefox/ geckodriver

    alamatURL = 'https://mail.google.com/mail/'  # alamat tujuan

    browser.get(alamatURL)                       # memanggil alamat tujuan

    browser.find_element_by_id("identifierId").send_keys("email")
    browser.find_element_by_id("identifierNext").click() # email GMail
    time.sleep(5)                                        # memberi jeda 5 detik

    browser.find_element_by_id("password").send_keys("password")
    browser.find_element_by_id("passwordNext").click()   # password email
 
# memanggil fungsi loginGMail:
loginGMail()
Pehatikan, kode diatas menggunakan metode find_element_by_id, kita lihat terdapat empat id pada kode diatas antara lain:
  1. identifierId
  2. identifierNext
  3. password
  4. passwordNext
Pertanyaannya, dari mana id tersebut didapat?
Sekarang buka peramban web firefox dan masukan alamat https://mail.google.com, seperti biasa kita akan dibawa ke halaman login. Tempatkan kursor tepat pada kolom email, klik kanan pilih opsi Inspect Element (Q). Agar lebih jelas, lihat gambar berikut ini.

Python - Automation Web Selenium

Nah, tiga id berikutnya pun sama, seperti itu cara mendapatkannya.
Next.. silahkan ganti baris kode berikut, isi dengan email yang akan kita coba:
browser.find_element_by_id("identifierId").send_keys("xxxxxx@gmail.com")
masukkan juga password email-nya pada baris kode:
browser.find_element_by_id("password").send_keys("passwordRahasia")
Simpan kode diatas ke direktori $HOME dengan nama loginMail.py (sebagai contoh).

Lakukan pengujian.
cd $HOME
python loginMail.py
Jika tutorial diatas diikuti dengan benar, maka hasilnya seperti dibawah ini, berhasil login 😎.

Python - Automation Web Selenium

Sederhana dan mudah dimengerti bukan?
Demikianlah tes otomatisasi kali ini untuk keperluan belajar. Jangan pernah bosan untuk belajar dan berbagi.
Happy coding!

2 comments:

  1. untuk download laporan (misalnya data excel) dari suatu web bisa pake cara ini mas?

    ReplyDelete
    Replies
    1. Bisa sekali, tinggal disesuaikan saja elementnya.

      Delete