İstisna oluştu: TypeError 'WebElement' nesnesi belirtilemez

Aug 16 2020

Merhaba çocuklar Gerçekten olduğum acemi piton ve ben sadece açılan kod parçası yazma Whatsapp

ve ona kişinin adını veriyorsunuz ve mesaj kaç kez istediğinizi gönderiyor.

Ama kodda hata ayıklamaya başladığımda bana şunu veriyor:

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

beyler lütfen python'da iyi biri cevap versin !!! 🙏🙏

Yanıtlar

1 DebanjanB Aug 16 2020 at 05:47

find_element_by_class_name ()

find_element_by_class_name() sınıf adına göre bir öğe bulur.

Kod satırında:

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

driver.find_element_by_class_name('_3FRCZ')tek bir WebElement döndürür . Bu nedenle ona bir dizin ekleyemezsiniz veya başka bir deyişle onu alt yazılamaz hale getiremezsiniz.


Çözüm

İki çözüm var:

  • Dizini kaldırın, yani [1]kodunuz iyi olacaktır.

  • Alternatif olarak bunun yerine driver.find_element_by_class_name()kullanmanız gerekiyor find_elements_by_class_name(). Çok etkili bir şekilde kod satırınız şöyle olacaktır:

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