iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Software Development

爬蟲基礎入門與實際應用系列 第 14

Day14、selenium常見bug處理

  • 分享至 

  • xImage
  •  

本文有整理在部落格裡。
裡面還有其他奇怪的文章,有空可以來看看喔。


昨天我們介紹了如何讓selenium動起來,今天我們就來了解一下使用selenium時常見的bug跟解決方法。
首先,第一個是版本問題,這其實是我前天在挖之前的程式出來跑時才發現的問題,
https://ithelp.ithome.com.tw/upload/images/20220929/20152706beeV743VX5.png
這問題基本上是driver跟瀏覽器版本不支援,最簡單只要重新下載對應版本的webdriver就好。

接著是這個,
https://ithelp.ithome.com.tw/upload/images/20220929/20152706WFLXR0pS7X.png
這代表著selenium無法找到你所指定的元素,一般來說,如果不是你定位位置錯誤,
八成就是網頁還沒有完整載入,就使selemium搜尋元素。
此時,我們可以試著使用簡單的方法,time.sleep(),使程式整體暫停n秒,也可以配合try except使用。
當然,selenium針對這個問題也有開發相關函式,首先是顯式等待,
https://ithelp.ithome.com.tw/upload/images/20220929/20152706EmCt6kGUhK.png
在這邊的意思是,我們針對所給予的元素,等待10秒,每0.2秒檢查是否出現,如果出現了就繼續,
如果10秒內還沒出現則報錯。
另外一種則是隱式等待,
https://ithelp.ithome.com.tw/upload/images/20220929/20152706xqXQtUjJxe.png
相對於顯式等待是針對個別元素是否生成,隱式等待則是針對整個頁面,以上圖為例,這邊就是讓整個程式暫停,
給予瀏覽器10秒的時間,如果10秒內"整個頁面都已經生成完成"(講得直白一點其實就是我們頁面左上角的圈圈不再轉動),則繼續程式運行,如果10內還沒載完,則報錯,因此可以看的出來,相對於顯式等待,隱式等待跟強制等待可能會要花費更久的時間。

那麼selenium的部分應該就簡單告一段落了,明天將會進入專題一。


上一篇
Day13、Selenium指令使用
下一篇
DAY15、專題一:惜物網 (1)
系列文
爬蟲基礎入門與實際應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言