Đã xảy ra ngoại lệ: Đối tượng TypeError 'WebElement' không thể chỉ định được
Xin chào các bạn, tôi thực sự là một người mới làm quen với python và tôi vừa viết một đoạn mã để mở Whatsapp
và bạn cung cấp cho nó tên của người đó và tin nhắn sau đó sẽ gửi bao nhiêu lần bạn muốn.
Nhưng khi tôi bắt đầu gỡ lỗi mã, nó cho tôi điều này:
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()
các bạn làm ơn ai đó giỏi python trả lời giúp mình với !!! 🙏🙏
Trả lời
find_element_by_class_name ()
find_element_by_class_name() tìm một phần tử theo tên lớp.
Trong dòng mã:
msg = driver.find_element_by_class_name('_3FRCZ')[1]
driver.find_element_by_class_name('_3FRCZ')
sẽ trả về một WebElement duy nhất . Do đó, bạn sẽ không thể đính kèm một chỉ mục vào nó hay nói cách khác là làm cho nó có thể đăng ký được.
Giải pháp
Có hai giải pháp:
Loại bỏ chỉ mục tức là
[1]
mã của bạn sẽ tốt.Như một sự thay thế, thay vì
driver.find_element_by_class_name()
bạn cần sử dụngfind_elements_by_class_name()
. Vì vậy, hiệu quả dòng mã của bạn sẽ là:msg = driver.find_elements_by_class_name('_3FRCZ')[1]