अपवाद हुआ है: TypeError 'WebElement' ऑब्जेक्ट सबस्क्रिप्टेबल नहीं है

Aug 16 2020

नमस्कार दोस्तों मैं वास्तव में अजगर के लिए एक नौसिखिया हूं और मैं सिर्फ एक कोड लिख रहा हूं जो व्हाट्सएप खोलता है

और आप इसे उस व्यक्ति का नाम और संदेश देते हैं, फिर आपको कितनी बार भेजना चाहते हैं।

लेकिन जब मैं कोड को डीबग करना शुरू करता हूं तो यह मुझे यह देता है:

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()

दोस्तों कृपया किसी ने मुझे अजगर का जवाब देना अच्छा है !!! p

जवाब

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]