Произошло исключение: объект TypeError 'WebElement' не подлежит подписке
Привет, ребята, я действительно новичок в python, и я просто пишу кусок кода, который открывает Whatsapp
и вы даете ему имя человека, и сообщение затем отправляется, сколько раз вы хотите.
Но когда я начинаю отлаживать код, он дает мне следующее:
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()
ребята, пожалуйста, ответьте мне, кто хорошо разбирается в Python !!! 🙏🙏
Ответы
find_element_by_class_name ()
find_element_by_class_name() находит элемент по имени класса.
В строке кода:
msg = driver.find_element_by_class_name('_3FRCZ')[1]
driver.find_element_by_class_name('_3FRCZ')
вернет один WebElement . Следовательно, вы не сможете прикрепить к нему индекс или, другими словами, сделать его подписываемым.
Решение
Есть два решения:
Удалите индекс, т.е.
[1]
ваш код будет в порядке.В качестве альтернативы вместо
driver.find_element_by_class_name()
вам нужно использоватьfind_elements_by_class_name()
. Итак, ваша строка кода будет выглядеть так:msg = driver.find_elements_by_class_name('_3FRCZ')[1]