如何在无头模式下的谷歌浏览器设置地理位置
Feb 28, 2020
1 minute read

谷歌到很多方法。试了一个又一个,但大部分方法都过时了。所幸最后发现了个解决办法,就是用 Chrome Devtools Protocol。

以下是一个简单的例子,用最常用的 selenium 来执行 Chrome Devtools Protocol 命令。

import time

from selenium.webdriver import Chrome, ChromeOptions

options = ChromeOptions()
options.add_argument("--headless")
driver = Chrome(options=options)
driver.execute_cdp_cmd(
    "Browser.grantPermissions",
    {
        "origin": "https://www.openstreetmap.org/",
        "permissions": ["geolocation"]
    },
)
driver.execute_cdp_cmd(
    "Emulation.setGeolocationOverride",
    {
        "latitude": 35.689487,
        "longitude": 139.691706,
        "accuracy": 100,
    },
)
driver.get("https://www.openstreetmap.org/")
driver.find_element_by_xpath("//span[@class='icon geolocate']").click()
time.sleep(3)  # wait for the page full loaded
driver.get_screenshot_as_file("screenshot.png")

Tokyo

Refecences




comments powered by Disqus