예외가 발생했습니다. 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]