爬蟲學習日記(十一)selenium 頁面元素更新

KIM曉峰發表於2019-03-14

今天HDMU發現獲取的資訊有重複,錯亂的現象。

Debug排查原因以後,發現是因為點選顯示詳情後,他舊的資訊還沒有更新,就被capture了,導致某些資訊是重複的。

歸根到底的原因是因為: 用.visibilityOfElementLocated()只有第一次是有用的,當後面再點選別的顯示詳情,.visibilityOfElementLocated()判斷的元素是依舊存在的,所以不會進行等待,直接capture。

思路:判斷元素是否更新。

我剛開始的方案是:用.refresh()方法,但是看了原始碼發現傳進去的Expectedcondition,看了很多文件也沒有具體的例子,Stack Overflow上面雖然有,但大多數放的是clickAble的condition,我試著自己放了visibilityOfElementLocated在裡面,但是不能達到效果。

第二種想到的方案是:每一次點選完以後,等2s。這種方案確實可行,但是有很大的漏洞,如果2s後顯示不出來,就會獲取不到。而且每個操作都要等兩秒,很拖慢xiaolv。

後來想到比較合適的方案是:利用上一篇的知識點,執行JS刪掉顯示出來的DIV,然後再點選,他就會自己渲染出來顯示詳情的資訊的DIV。

JS程式碼:var div = document.getElementsByClassName('layer_popup01')[0];div.parentNode.removeChild(div);

相關文章