มีข้อยกเว้นเกิดขึ้น: อ็อบเจ็กต์ TypeError 'WebElement' ไม่สามารถห้อยลงได้

Aug 16 2020

สวัสดีทุกคนฉันเป็นมือใหม่หัดหลามจริงๆและฉันเพิ่งเขียนโค้ดที่เปิด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()

ขอคนเก่งหลามตอบหน่อย !!! 🙏🙏

คำตอบ

1 DebanjanB Aug 16 2020 at 05:47

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]