Saya Membuat Script Whatsapp Yang Menyimpan Semua Nama Kontak Whatsapp Saya Di Selenium.

Kesalahan:

Traceback (most recent call last):
  File ".\main.py", line 11, in <module>
    print(contact.text())
AttributeError: 'list' object has no attribute 'text'

Kode:

from selenium import webdriver
from selenium.webdriver.common import keys
import time

driver = webdriver.Firefox(executable_path="geckodriver.exe")
driver.get("https://web.whatsapp.com/")
input("Qr Code Done? : ")
driver.implicitly_wait(10)

contact = driver.find_elements_by_class_name('_3q9s6')
print(contact.text()

Terima kasih

2
Lachi CalmStyle 1 Oktober 2021, 13:25

3 jawaban

Jawaban Terbaik

.find_element_* (tanpa s) untuk mencari elemen tunggal, atau ini cocok dengan elemen pertama jika di halaman web ada beberapa elemen dengan spesifikasi yang sama:

contact = driver.find_element_by_class_name('_3q9s6')
print(contact.text)

Tapi kode Anda, .find_elements_* (dengan s), itu akan mengembalikan daftar. Anda dapat mencapai ini dengan mengakses indeks:

contact = driver.find_element_by_class_name('_3q9s6')

#first element
print(contact[0].text)

Catatan, untuk mengambil teks seharusnya .text bukan .text()

1
frianH 1 Oktober 2021, 10:55
find_elements 

Mengembalikan list dalam ikatan Selenium-Python. Jadi, Anda tidak dapat menggunakan .text pada daftar.

Lakukan hal berikut:

  1. gunakan find_element sebagai gantinya.

Seperti :

contact = driver.find_element_by_class_name('_3q9s6')
print(contact.text())
  1. Jika Anda ingin menggunakan find_elements, lakukan ini:

    contact = driver.find_elements_by_class_name('_3q9s6')
    for c in contact:
       print(c.text)
    
2
cruisepandey 1 Oktober 2021, 10:33

find_element_by_class_name dalam bentuk jamak, ia menemukan semua elemens, coba:

contact = driver.find_element_by_class_name('_3q9s6')
print(contact.text())

Anda di mana hanya karakter, cukup dekat :-)

1
U12-Forward 1 Oktober 2021, 10:30