P13 - Implementasi Automation Testing Dengan Selenium
P13 - Implementasi Automation Testing Dengan Selenium
Instalasi selenium pada python environment anda dengan menjalankan perintah berikut ini:
Selanjutnya, karena pada contoh ini kita akan menggunakan chrome, maka pastikan pula anda telah
mendownload chrome di system anda masing-masing.
Buat file dengan nama percobaan2.py lalu salin kode dibawha ini:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get("https://www.python.org/")
time.sleep(3) #nunggu 3 detik
driver = webdriver.Chrome()
driver.get("https://www.python.org/")
time.sleep(3)
//a: Ini adalah cara kita memberi tahu XPath untuk mencari
elemen <a> di dalam halaman web. Tanda dua garis miring miring
// berarti kita ingin mencari elemen ini di seluruh dokumen HTML,
tidak peduli seberapa dalam elemen tersebut tertanam.
[@href='/about/']: Bagian ini memberi tahu XPath bahwa kita hanya
tertarik pada elemen-elemen <a> yang memiliki atribut href dengan
nilai '/about/'. Dalam konteks ini, @href berarti kita ingin memeriksa
nilai atribut href, dan '/'about/' adalah nilai yang ingin kita cocokkan.
Jadi, XPath ini mencari semua tautan (<a>) di halaman web yang
mengarah ke URL '/about/'.
driver = webdriver.Chrome()
driver.get("https://google.com/")
time.sleep(3) #nunggu 3 detik
Tugas: buatlah python automation untuk anda melakukan login ke e-learning secara otomatis.
Untuk melakukan percobaan ini, pastikan anda telah mencoba menyelesaikan module flask yang
telah disediakan. Jika anda telah menerapkannya, jalankan flask server sehingga web dapat diakses
dari http://localhost:9999 atau http://127.0.0.1:9999
Untuk menguji fitur ini secara otomatis menggunakan selenium, Buat sebuah file dengan nama uji-
login.py lalu salin kode berikut ini:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from datetime import datetime
login_url = 'http://127.0.0.1:9999/'
email = '[email protected]'
password = 'rahasia123'
driver = webdriver.Chrome()
driver.get(login_url)
email_field.send_keys(email)
time.sleep(2)
password_field.send_keys(password)
time.sleep(2)
login_button.click()
time.sleep(5)
current_url = driver.current_url
if '/dashboard' in current_url:
status = "Successful"
elif '/' in current_url:
status = "Login gagal"
else:
status = "Failed (Unknown error)"
driver.quit()
Buat file dengan nama uji-tambah-mahasiswa.py lalu salin kode dibawah ini:
from selenium import webdriver
from selenium.webdriver.common.by import By
import datetime
import time
driver = webdriver.Chrome()
try:
driver.get("http://127.0.0.1:9999/mahasiswa/tambah")
tombol_tambah.click()
time.sleep(5)
finally:
# Menyimpan hasil uji ke dalam file txt
with open("uji-fungsionalitas.txt", "a") as file:
waktu_uji = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
file.write(f"{waktu_uji} - Fitur CRUD - Status: {status} \n")
Pada kode diatas, kita akan menggunakan Selenium untuk mengotomatisasi pengujian pada
halaman web. Pertama, skrip akan dijalankan menggunakan Chrome WebDriver untuk
mengontrol browser Chrome yang ada di sistem. Kemudian, diarahkan untuk mengakses
URL "http://127.0.0.1:9999/mahasiswa/tambah" di browser tersebut.
Selanjutnya, kita akan mencari elemen-elemen pada halaman web menggunakan metode
find_element, lalu mengisi formulir dengan data yang diinginkan (NIM, nama lengkap, dan
alamat). Setiap kali kita mengirimkan data, kita menunggu beberapa detik ( time.sleep(5))
untuk memastikan bahwa halaman telah dimuat sepenuhnya sebelum melakukan tindakan
berikutnya.
Setelah mengisi form, skrip diarahkan untuk mengklik tombol "Tambah" kemudian
memeriksa apakah halaman telah diarahkan kembali ke mahasiswa melalui pengecekan
URL. Jika ya, status diatur sebagai "Sukses". Jika tidak, status diatur sebagai "Gagal -
Penambahan data mahasiswa gagal."
Jika ada kesalahan yang terjadi selama proses, exception akan ditangkap, dan status diatur
sebagai "Gagal". Informasi kesalahan juga dicetak menggunakan print.
Terakhir, waktu uji (tanggal dan jam) dicatat, bersama dengan status hasil uji, dan disimpan
dalam file "uji-fungsionalitas.txt". Browser ditutup setelah pengujian selesai (driver.quit()).
driver = webdriver.Chrome()
try:
# Klik tombol "Ubah" pada baris pertama tabel
driver.get("http://127.0.0.1:9999/mahasiswa")
time.sleep(5)
tombol_ubah = driver.find_element(By.XPATH, "(//table[@class='table
table-striped']//tr[position()=1]//a[text()='Ubah'])[1]")
tombol_ubah.click()
time.sleep(5)
nama_input.clear()
time.sleep(2)
nama_input.send_keys("Fulan")
time.sleep(5)
alamat_input.clear()
time.sleep(2)
alamat_input.send_keys("Batu Aji")
time.sleep(5)
if "mahasiswa" in driver.current_url:
status = "Sukses"
else:
status = "Gagal - Ubah data mahasiswa gagal."
except Exception as e:
status = "Gagal"
print(f"Terjadi kesalahan: {e}")
finally:
with open("uji-fungsionalitas.txt", "a") as file:
waktu_uji = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
file.write(f"{waktu_uji} - Fitur CRUD Ubah Mahasiswa - Status: {status}\n")
driver.quit()
//table[@class='table
table-striped']//tr[position()=1]//a[text()='Ubah'])[1]")
Dalam kode XPATH ini, kita mencari elemen <a> yang memiliki teks
"Ubah" di dalam tabel dengan atribur class "table table-striped",
dimana elemennya harus terletak dalam baris pertama (position()=1)
dari tabel.
Buat file dengan nama uji-hapus-mahasiswa.py lalu salin kode dibawah ini:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.alert import Alert
import datetime
import time
driver = webdriver.Chrome()
try:
# Klik tombol "Ubah" pada baris pertama tabel
driver.get("http://127.0.0.1:9999/mahasiswa")
time.sleep(5)
# Tentukan kriteria untuk mencari baris yang akan dihapus (misalnya, NIM atau nama mahasiswa)
kriteria = "123456" #Sesuaikan ini dengan NIM dari user yang terakhir diubah / ditambah
# Memeriksa apakah elemen mahasiswa masih ada di halaman (menandakan data masih ada)
elemen_mahasiswa = driver.find_elements(By.XPATH, f"//table[@class='table
table-striped']//tr[td[contains(text(), '{kriteria}')]]")
if not elemen_mahasiswa:
status = "Sukses"
else:
status = "Gagal - Data mahasiswa masih ada setelah dihapus."
except Exception as e:
status = "Gagal"
print(f"Terjadi kesalahan: {e}")
finally:
with open("uji-fungsionalitas.txt", "a") as file:
waktu_uji = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
file.write(f"{waktu_uji} - Fitur CRUD Hapus Mahasiswa - Status: {status}\n")
driver.quit()
- Selamat Mengerjakan -