iT邦幫忙

2023 iThome 鐵人賽

DAY 8
1
自我挑戰組

待業不頹廢系列 第 8

Day 8 . 欸 今天要幹嘛 - 錯誤訊息 AttributeError

  • 分享至 

  • xImage
  •  

行前提要

下面是在處理動態頁面的爬蟲時,遇到的錯誤
算是忽然插播的一篇

情境題

yojijun@chenyouzideMacBook-Pro python % python3 sss.py
Traceback (most recent call last):
File "/Users/yojijun/Desktop/python/sss.py", line 12, in <module>
element = driver.find_element_by_class_name("gLFyf")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'WebDriver' object has no attribute 'find_element_by_class_name'
yojijun@chenyouzideMacBook-Pro python %

AttributeError 是在 Python 中一種常見的錯誤
錯誤訊息及發生

  • 發生:
    可能會在您嘗試訪問一個對象的屬性時發生,或者在您嘗試調用一個對象的方法時發生。
  • 錯誤:
    AttributeError 是一種常見的錯誤,它表示在Python程式中,您嘗試訪問一個對象的屬性,但該對象沒有該屬性。

錯誤訊息中 最後一行有說到 AttributeError: 'WebDriver' object has no attribute 'find_element_by_class_name' 沒有這個屬性


也是有一種做法可以去查看
不確定對象是否具有該屬性或方法,可以使用 hasattr() 函數來檢查:

from selenium import webdriver
# 初始化Chrome WebDriver
driver = webdriver.Chrome()

# 檢查 driver 對象是否具有 find_element_by_class_name 方法
if hasattr(driver, 'find_element_by_class_name'):    
	print("driver 對象具有 find_element_by_class_name 方法")
else:    
	print("driver 對象沒有 find_element_by_class_name 方法")

# 關閉 WebDriver
driver.quit()

⬇️⬇️⬇️⬇️⬇️⬇️

yojijun@chenyouzideMacBook-Pro python % python3 sss.py
driver 對象沒有 find_element_by_class_name 方法
yojijun@chenyouzideMacBook-Pro python %

現階段暫時選擇無腦使用錯誤訊息來了解狀況

小結

如果使用 hasattr() 函數結果還是有所疑慮,
可以換dir()函數試看看,這是網上有大大在2022年尾寫的文章,
內文有詳細介紹跟示範 如何解決AttributeError?


上一篇
Day 7 . 欸 今天要幹嘛 - 索引值:切片(slicing)
下一篇
Day 9 . 欸 今天要幹嘛 - 關於 enumerate()
系列文
待業不頹廢30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言