首页 > 解决方案 > Python Selenium - 覆盖地理位置不起作用

问题描述

我正在尝试使用 selenium webdriver 导航到谷歌地图,同时在 Python 中模拟不同的位置。

这似乎不起作用:

from selenium import webdriver

driver = webdriver.Chrome()

params = {
    "latitude": 42.1408845,
    "longitude": -72.5033907,
    "accuracy": 100
}
driver.execute_cdp_cmd("Emulation.setGeolocationOverride", params)
driver.get("https://maps.google.com")

当谷歌地图打开时,我得到的是我当前的位置,而不是params.

我究竟做错了什么?使用硒 4。

标签: pythonseleniumselenium-webdriverwebdriverselenium-chromedriver

解决方案


其实你快到了。你只需要点击你的位置按钮。使用这个:

from selenium import webdriver
from selenium.webdriver.common.by import By #added
from selenium.webdriver.support.ui import WebDriverWait #added
from selenium.webdriver.support import expected_conditions as EC #added

driver = webdriver.Chrome()

params = {
    "latitude": 42.1408845,
    "longitude": -72.5033907,
    "accuracy": 100
}
driver.execute_cdp_cmd("Emulation.setGeolocationOverride", params)
driver.get("https://maps.google.com")
element = WebDriverWait(driver, 20).until(
 EC.presence_of_element_located((By.ID, "widget-mylocation"))) #added
element.click(); #added

推荐阅读