Tulisan ini saya posting untuk membantu teman-teman yang kesulitan membuat program pengontrol aplikasi perpesanan WhatsApp. Terutama karena element di website WhatsApp yang sering berubah-ubah. Saya berikan juga trik untuk menghindari error StaleElementReferenceException.
Asumsi : Anda pakai browser Chrome+chromedriver
Teknik Membaca Pesan Masuk di WhatsApp
- Cek tanda bulatan hijau yang muncul ketika ada pesan masuk
Dari browser Chrome buka menu More Tools>Developer Tools (Ctrl_Shift+I). Klik tab Elements dan icon anak panah . Sorot mouse ke tanda bulatan hijau. Maka akan diperoleh kode
Perhatikan class=”_2H6nH”. Itulah find element yang dapat kita pakai untuk mengecek Pesan Baru.
Dalam Selenium ada beberapa pilihan finding elements seperti Class_Name, Tag_Name, XPath, CSS_Selector, dll. Tapi saya lebih sering menggunakan Class_Name dan XPath. Class_Name biasanya untuk mencari lokasi yang dinamis (multiple). Xpath untuk lokasi yang fixed (tunggal)
Perintah pythonnya
try:
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CLASS_NAME, “_2H6nH” ))).click()
print(“Ada Pesan Baru”)
return True
except:
return False
try…except dan EC.element_to_be_clickable adalah perintah yang biasa digunakan untuk menghindari error StaleElementReferenceException
2. Baca pesan masuk
Setelah perintah itu dieksekusi maka whatsapp akan masuk ke page pengirim pesan. Untuk menentukan cluster pesan masuk cari class message-in
Selanjutnya klik salah satu pesan masuk. Pada bagian elements didapat
Perintah pythonnya
PSan=””
try:
for msgIn in driver.find_elements(By.CLASS_NAME,’message-in’):
try:
psnIn = msgIn.find_elements(By.CLASS_NAME,”_21Ahp”)
try:
brtIn = psnIn[len(psnIn)-1]
PSan= brtIn.text
except:
PSan= “image”
print(“Pesan : ” + PSan)
except:
print(“Gagal baca elemen class”)
except:
print(“Gagal mendapatkan pesan”)
Teknik Mengirim Pesan Teks di WhatsApp
Pada elements developer tools, sorot mouse ke bagian input box kirim WhatsApp
Diperoleh elements seperti gambar di bawah. Pilih Copy > Copy Xpath
Kode yang didapat //*[@id=”main”]/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[1]/p
Perintah pythonnya
msg=”Terimakasih sudah menghubungi kami”
try:
textInput = driver.find_element_by_xpath(“//*[@id=”main”]/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[1]/p“)
textInput.clear()
textInput.send_keys(msg + Keys.ENTER)
time.sleep(2)
return True
except:
print(“Tidak bisa menulis pesan ” + msg)
print(“Silahkan hubungi administrator atau teknisi”)
return False
Anda masih kesulitan atau bingung dengan materi ini?
Anda ingin memesan software berbasis python dengan GUI Windows (tkinter)?
Anda ingin memesan program bot untuk keperluan usaha Anda seperti polling, mesin penjawab, WhatsApp Gateway, posting FB/twitter otomatis dan lain-lain
Hubungi WA : 089669288880 (programmer)