← Back to list

Selenium Chrome WebDriver 定位 之2

之前在 Selenium Chrome WebDriver 定位 有記錄過 Chrome 模擬定位,但前陣子遇到 CDP 送了定位但沒有用的情況。

goescat.logging.DEBUG · 2025-05-12 10:53 · 0 claps · 1.4 min read
#selenium #selenium-webdriver #automation-testing
Open on Medium ↗

Selenium Chrome WebDriver 定位 之2

之前在 Selenium Chrome WebDriver 定位 有記錄過 Chrome 模擬定位,但前陣子遇到 CDP 送了定位但沒有用的情況。

所以我實際使用 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。

  1. 拿到你要的 url 的 targetId 之後,attachToTarget 得到 session id:

driver.execute_cdp_cmd("Target.attachToTarget", { "targetId": target_id, "flatten": True })

  1. 現在就可以送 CDP command 給特定 target 了:

"Emulation.setGeolocationOverride", { "latitude": lat, "longitude": lng, "accuracy": 10, "sessionId" : session_id }


메타데이터
post_id
a4fc2f19b0fd
slug
selenium-chrome-webdriver-定位-之2-a4fc2f19b0fd
url
https://medium.com/@goescat/selenium-chrome-webdriver-%E5%AE%9A%E4%BD%8D-%E4%B9%8B2-a4fc2f19b0fd
canonical_url
https://medium.com/@goescat/selenium-chrome-webdriver-%E5%AE%9A%E4%BD%8D-%E4%B9%8B2-a4fc2f19b0fd
author_url
https://medium.com/@goescat
status
ok
fetched_at
2026-07-19 22:17:22