selenium 如何取得 canvas element

看板Python作者 (八八里阿巴)時間6年前 (2019/03/15 15:11), 6年前編輯推噓2(2011)
留言13則, 2人參與, 6年前最新討論串1/1
最近在嘗試爬蟲以及用selenium對網頁做一些自動化的練習 發現只要是HTML5 的網頁遊戲幾乎都無法直接用開發者工具(chrome F12)的element去選 到我要的物件 例如這個遊戲: http://www.relfind.com/game/magician.html 進去之後的score得分是動態顯示的 還有開始按鈕感覺也是個物件 但用element去選會是選到一整個畫布 查資料後我的理解(推測)是 canvas會把所有元件(例如按鈕、分數)綁在一起視為一張圖 片, 所以無法直接使用開發者工具的element去選取(去選的話也只是選到這張大畫布) 目前查到感覺可行的解法是用selenium action去模擬滑鼠的行為 把滑鼠移到按鈕的座標上去做點擊 但這樣如果我想取到遊戲的得分就還是做不到 想請問有沒有什麼辦法可以取到canvas畫布下的按鈕element呢? 或是前輩們有沒有什麼關鍵字可以提供我google -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.60.124 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1552633887.A.15D.html ※ 編輯: m87dd05 (60.249.60.124), 03/15/2019 15:12:13

03/15 15:56, 6年前 , 1F
直接fire JS event就可以了 不用真的去點按鈕
03/15 15:56, 1F

03/15 15:58, 6年前 , 2F
我看他的game.js很淺顯易懂,你可以試試看
03/15 15:58, 2F

03/15 17:03, 6年前 , 3F
請問fire 是指自己去爬程式碼嗎?如果是的話遇到特意醜化
03/15 17:03, 3F

03/15 17:03, 6年前 , 4F
隱藏code的情境下是不是就也行不通了?
03/15 17:03, 4F

03/15 17:05, 6年前 , 5F
會有這樣的疑問是想說假使今天想爬一個網站,用find all
03/15 17:05, 5F

03/15 17:05, 6年前 , 6F
或get element之類的去爬全部程式碼找出我要的東西,通常
03/15 17:05, 6F

03/15 17:06, 6年前 , 7F
我會先用開發者工具選出我要的element但若遇到這類型的
03/15 17:06, 7F

03/15 17:06, 6年前 , 8F
網頁就行不通了
03/15 17:06, 8F

03/15 17:29, 6年前 , 9F
那是畫布,button 不是掛在DOM tree上,是畫出來的一張圖
03/15 17:29, 9F

03/15 17:29, 6年前 , 10F
,並不是對elements 觸發事件 你看他的js是認座標,另外
03/15 17:29, 10F

03/15 17:29, 6年前 , 11F
其實爬蟲真的case by case. 去研究作者的寫法爬他的code
03/15 17:29, 11F

03/15 17:29, 6年前 , 12F
,然後成功抓到你要的資訊,我覺得相當有趣啊。
03/15 17:29, 12F

03/15 17:58, 6年前 , 13F
好的感謝r大,我再來細細研究看看
03/15 17:58, 13F
文章代碼(AID): #1SYr0V5T (Python)
文章代碼(AID): #1SYr0V5T (Python)