【问题标题】:Python Selenium - override geolocation not workingPython Selenium - 覆盖地理位置不起作用
【发布时间】:2021-01-15 21:02:03
【问题描述】:

我正在尝试使用 selenium webdriver 导航到 Google 地图,同时在 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")

当 Google 地图打开时,我得到的是我当前的位置,而不是 params 中设置的位置。

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

【问题讨论】:

    标签: python selenium selenium-webdriver webdriver selenium-chromedriver


    【解决方案1】:

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

    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
    

    【讨论】:

    • 谢谢,我想这确实解决了问题。但是,我宁愿在到达网站之前设置我的位置(以减少与网站本身的交互量)。有没有办法做到这一点?另外,我意识到这适用于谷歌地图,但如果网站没有“位置”按钮并根据位置显示不同的内容怎么办?
    【解决方案2】:

    https://ifconfig.co/ 定义实际坐标,而不是 cdp 传递的坐标。

    【讨论】:

      猜你喜欢
      • 2020-08-08
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      相关资源
      最近更新 更多