所以我實際使用 Chrome 送一次 CDP command 試試。
1. 首先,允許網站定位。
2. 接著在開發者工具中找到 Protocol Monitor(沒有開啟過的話,需要先去 Settings > Experiments > Protocol Monitor 勾選)。
然後試著在有問題的頁面送 CDP command⋯⋯
這時候我發現 Protocol Monitor 有 target 可以選擇;我遇到「送了定位但沒有用」的頁面中有很多 target。
或許是沒有指定時,我 CDP command 沒有送到 main。
-
看了一下官方文件怎麼指定 target。
1. 先用 Target.getTargets 取得所有 target:
driver.execute_cdp_cmd("Target.getTargets", {})
會得到一個 object。
2. 拿到你要的 url 的 targetId 之後,attachToTarget 得到 session id:
driver.execute_cdp_cmd("Target.attachToTarget", { "targetId": target_id, "flatten": True })
3. 現在就可以送 CDP command 給特定 target 了:
"Emulation.setGeolocationOverride", { "latitude": lat, "longitude": lng, "accuracy": 10, "sessionId" : session_id }