Une exception s'est produite: l'objet TypeError 'WebElement' n'est pas en indice
Bonjour les gars, je suis vraiment un débutant en python et j'écris juste un morceau de code qui ouvre Whatsapp
et vous lui donnez le nom de la personne et le message envoie alors combien de fois vous voulez.
Mais quand je commence à déboguer le code, cela me donne ceci:
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()
les gars s'il vous plaît quelqu'un de bon en python répondez-moi !!!
Réponses
find_element_by_class_name ()
find_element_by_class_name() trouve un élément par nom de classe.
Dans la ligne de code:
msg = driver.find_element_by_class_name('_3FRCZ')[1]
driver.find_element_by_class_name('_3FRCZ')
renverrait un seul WebElement . Par conséquent, vous ne pourrez pas y attacher un index ou en d'autres termes le rendre indexable.
Solution
Il existe deux solutions:
Retirez l' index, c'est-à
[1]
- dire que votre code sera tout bon.Au lieu de cela,
driver.find_element_by_class_name()
vous devez utiliserfind_elements_by_class_name()
. Donc, effectivement, votre ligne de code sera:msg = driver.find_elements_by_class_name('_3FRCZ')[1]