Es ist eine Ausnahme aufgetreten: Das TypeError-Objekt 'WebElement' ist nicht subskriptierbar
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
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()
verwendenfind_elements_by_class_name()
. So effektiv wird Ihre Codezeile sein:msg = driver.find_elements_by_class_name('_3FRCZ')[1]