Pengecualian telah terjadi: Objek 'WebElement' TypeError tidak dapat berlangganan

Aug 16 2020

Halo teman-teman, saya benar-benar pemula dalam python dan saya hanya menulis sebuah kode yang membuka Whatsapp

dan Anda memberinya nama orang tersebut dan pesannya kemudian mengirimkan berapa kali Anda inginkan.

Tetapi ketika saya mulai men-debug kode itu memberi saya ini:

Exception has occurred: TypeError 'WebElement' object is not subscriptable File "E:\Iliya\My Courses\Python\Projects\Whatsapp Robot\Whatsapp_Bot.py", line 15, in <module> msg = driver.find_element_by_class_name('_3FRCZ')[1]

# ======================================
from selenium import webdriver
PATH = 'C:\\Program Files (x86)\\chromedriver.exe'
driver = webdriver.Chrome(PATH)
driver.get('https://web.whatsapp.com/')

input("Please Press The 'Enter' Button... ")
name = input("Enter Person's Name: ")
msg = input("Enter The Message: ")
counter = int(input("How Many Times Do You Want To Repeat The Message?:  "))

user = driver.find_element_by_xpath('//span[@title = "{}"]'.format(name))
user.click()
msg = driver.find_element_by_class_name('_3FRCZ')[1]
for i in range(counter):
    msg.send_keys(msg)
    button = driver.find_element_by_class_name('_1U1xa')[0]
    button.click()

kawan tolong seseorang yang pandai python jawab aku !!! 🙏🙏

Jawaban

1 DebanjanB Aug 16 2020 at 05:47

find_element_by_class_name ()

find_element_by_class_name() menemukan elemen dengan nama kelas.

Di baris kode:

msg = driver.find_element_by_class_name('_3FRCZ')[1]

driver.find_element_by_class_name('_3FRCZ')akan mengembalikan satu WebElement . Karenanya Anda tidak akan dapat melampirkan indeks ke sana atau dengan kata lain membuatnya menjadi subskrip.


Larutan

Ada dua solusi:

  • Hapus indeks, yaitu [1]kode Anda akan baik-baik saja.

  • Sebagai alternatif, alih-alih driver.find_element_by_class_name()Anda perlu menggunakan find_elements_by_class_name(). Jadi efektif baris kode Anda adalah:

    msg = driver.find_elements_by_class_name('_3FRCZ')[1]