0% menganggap dokumen ini bermanfaat (0 suara)
30 tayangan8 halaman

P13 - Implementasi Automation Testing Dengan Selenium

Dokumen tersebut memberikan panduan lengkap untuk melakukan pengujian otomatis web dengan menggunakan Selenium. Dokumen tersebut menjelaskan cara instalasi Selenium dan Chrome, melakukan navigasi link, pencarian Google, dan pengujian fitur login serta operasi CRUD pada data mahasiswa secara otomatis dengan menuliskan kode Python.

Diunggah oleh

hasbikizkl
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
30 tayangan8 halaman

P13 - Implementasi Automation Testing Dengan Selenium

Dokumen tersebut memberikan panduan lengkap untuk melakukan pengujian otomatis web dengan menggunakan Selenium. Dokumen tersebut menjelaskan cara instalasi Selenium dan Chrome, melakukan navigasi link, pencarian Google, dan pengujian fitur login serta operasi CRUD pada data mahasiswa secara otomatis dengan menuliskan kode Python.

Diunggah oleh

hasbikizkl
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 8

Praktikum: Implementasi Automation

Testing dengan Selenium

Percobaan 1: Instalasi module selenium dengan pip dan Chrome

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.

Percobaan 2: Menjelajahi link navigasi dengan Selenium

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

# Mencari dan mengklik link dengan isi teks "About"


about_link = driver.find_element(By.LINK_TEXT, "About")
about_link.click()
time.sleep(3)

# Menutup browser setelah selesai


driver.quit()
Kelemahan utama dari metode By.LINK_TEXT adalah metode ini dapat menyebabkan ambigu karena
mungkin ada navigasi lainnya dengan nama About. Oleh karena itu, cara yang direkomendasikan
adalah dengan menggunakan XPATH seperti berikut 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)

# Mencari dan mengklik link dengan isi a href /about


about_link = driver.find_element(By.XPATH, "//a[@href='/about/']")
about_link.click()
time.sleep(3)

# Mencari dan mengklik link dengan isi a href /community


about_link = driver.find_element(By.XPATH, "//a[@href='/community/']")
about_link.click()
time.sleep(3)

# Menutup browser setelah selesai


driver.quit()

 //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/'.

Percobaan 3: Googling dengan selenium

Salin kode berikut ini:


from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
driver.get("https://google.com/")
time.sleep(3) #nunggu 3 detik

# Mencari dan mengklik link dengan isi a href /about


input_pencarian = driver.find_element(By.XPATH, "//textarea[@name='q' and @type='search']")
input_pencarian.send_keys("Tutorial Selenium")#supaya ga ngandelin modul aja
time.sleep(5)

tombol_search = driver.find_element(By.XPATH, "//input[@name='btnK']")


tombol_search.click()
time.sleep(3)

# Menutup browser setelah selesai


driver.quit()

Ekspresi XPath diatas pada variable input_pencarian ini berfungsi untuk


mencari elemen <textarea> yang memiliki atribut name dengan nilai 'q'
dan atribut type dengan nilai 'search'. Dengan kata lain, ini mencocokkan
sebuah area teks di halaman web yang biasanya digunakan untuk pencarian
dan memiliki nama 'q' serta jenis 'search'.

Tugas: buatlah python automation untuk anda melakukan login ke e-learning secara otomatis.

Percobaan 4: Pengujian fitur login webflask

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 = driver.find_element(By.XPATH, '//input[@name="email"]')


password_field = driver.find_element(By.XPATH, '//input[@name="password"]')
login_button = driver.find_element(By.XPATH, '//button[@type="submit"]')

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)"

current_datetime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

with open('uji-fungsionalitas.txt', 'a') as file:


if '<h1>Internal Server Error</h1>' in driver.page_source:
file.write(f"Fitur Login - Diuji pada: {current_datetime} - Status: Error - Internal Server Error\n")
else:
file.write(f"Fitur Login - Diuji pada: {current_datetime} - Status: {status}\n")

driver.quit()

Percobaan 5: Automasi Fitur CRUD data mahasiswa webflask

5.1 Uji fitur tambah mahasiswa

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")

nim_input = driver.find_element(By.NAME, "nim")


nama_input = driver.find_element(By.NAME, "nama_lengkap")
alamat_input = driver.find_element(By.NAME, "alamat")
tombol_tambah = driver.find_element(By.XPATH, "//button[text()='Tambah']")
nim_input.send_keys("12345") # Ganti dengan NIM yang diinginkan
time.sleep(5)
nama_input.send_keys("Nama Mahasiswa") # Ganti dengan nama lengkap yang diinginkan
time.sleep(5)
alamat_input.send_keys("Alamat Mahasiswa") # Ganti dengan alamat yang diinginkan

tombol_tambah.click()
time.sleep(5)

# Memeriksa apakah halaman telah diarahkan kembali ke dashboard


if "mahasiswa" in driver.current_url:
status = "Sukses"
else:
status = "Gagal - Penambahan data mahasiswa gagal."
except Exception as e:
status = "Gagal"
print(f"Terjadi kesalahan: {e}")

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")

# Menutup browser setelah selesai


driver.quit()

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()).

5.2 Mengubah data mahasiswa


Buat file dengan nama uji-ubah-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:
# 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 = driver.find_element(By.NAME, "nama_lengkap")


alamat_input = driver.find_element(By.NAME, "alamat")

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)

tombol_update = driver.find_element(By.XPATH, "//button[text()='Update']")


tombol_update.click()
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.

Tanda kurung siku ([]) di sekitar position()=1 menunjukkan bahwa


kita memilih elemen yang merupakan anak pertama dari elemen <tr>
dalam tabel. Tanda kurung kurawal terakhir ([1]) menunjukkan
bahwa kita hanya memilih elemen pertama yang cocok dengan kriteria
tersebut.

5.3 Menghapus data mahasiswa

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

# Temukan baris yang sesuai dengan kriteria


baris = driver.find_element(By.XPATH, f"//table[@class='table table-striped']//tr[td[contains(text(),
'{kriteria}')]]")

# Klik tombol "Hapus" di baris yang sesuai


tombol_hapus = baris.find_element(By.XPATH, ".//a[text()='Hapus']")
tombol_hapus.click()

# Menghadapi konfirmasi alert dan menyetujui (klik OK)


alert = Alert(driver)
alert.accept()
time.sleep(5)

# 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 -

Anda mungkin juga menyukai