Es ist eine Ausnahme aufgetreten: Das TypeError-Objekt 'WebElement' ist nicht subskriptierbar

Aug 16 2020

Hallo Leute, ich bin wirklich ein Neuling in Python und schreibe gerade einen Code, der WhatsApp öffnet

und Sie geben ihm den Namen der Person und die Nachricht sendet dann, wie oft Sie wollen.

Aber wenn ich anfange, den Code zu debuggen, gibt es mir Folgendes:

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

Jungs, bitte jemand, der gut in Python ist, antworte mir !!! 🙏🙏

Antworten

1 DebanjanB Aug 16 2020 at 05:47

find_element_by_class_name ()

find_element_by_class_name() findet ein Element anhand des Klassennamens.

In der Codezeile:

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

driver.find_element_by_class_name('_3FRCZ')würde ein einzelnes WebElement zurückgeben . Daher können Sie keinen Index anhängen oder mit anderen Worten abonnieren.


Lösung

Es gibt zwei Lösungen:

  • Entfernen Sie den Index, dh [1]Ihr Code ist in Ordnung.

  • Als Alternative müssen Sie stattdessen driver.find_element_by_class_name()verwenden find_elements_by_class_name(). So effektiv wird Ihre Codezeile sein:

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