python - 如何在 Python/Chromedriver/Selenium 中设置模拟地理位置长/纬度

标签 python selenium google-chrome selenium-chromedriver google-chrome-devtools

我正在运行 Python/Chromedriver/GoogleChrome/Selenium headless 在 python 上,我在弄清楚如何以编程方式设置自定义地理位置长/纬度时遇到了一些麻烦;以下代码不会更新 google.com 或 https://www.infobyip.com/browsergeolocation.php 上的位置

目前我正在使用以下选项启动 chromedriver:

chrome_options.add_experimental_option("prefs", { 
    "profile.default_content_setting_values.media_stream_mic": 1, 
    "profile.default_content_setting_values.media_stream_camera": 1,
    "profile.default_content_setting_values.geolocation": 1, 
    "profile.default_content_setting_values.notifications": 1,
    "profile.default_content_settings.geolocation": 1,
    "profile.default_content_settings.popups": 0
  })

我可以使用以下命令调用并设置/获取地理位置长/纬度:

    driver.execute_script("""navigator.geolocation.getCurrentPosition = function(success, failure) { 
      success({ 
        coords: {latitude: -43.5333, longitude: 172.633}, 
        timestamp: Date.now(), 
      }); 
    }"""); 
    time.sleep(5) 
    print(driver.execute_script("var positionStr=\"\";"+ 
                                "window.navigator.geolocation.getCurrentPosition(function(pos){positionStr=pos.coords.latitude+\":\"+pos.coords.longitude});"+
                                "return positionStr;"))

这确实返回我设置的更新的经度/纬度。 但是当使用https://www.infobyip.com/browsergeolocation.php时或http://google.com ,它不会获取新的地理位置并且不起作用。

如何使用 chromedriver 配置参数、chrome 开发工具以编程方式或通过修改 chrome 配置文件目录中的文件来设置自定义地理位置? pythons selenium on stack Overflow 的其他答案似乎在这里不起作用。

最佳答案

现在实际上可以使用 Chrome Devtools 协议(protocol) (cdp) 对其进行编程:

params = {
    "latitude": 50.1109,
    "longitude": 8.6821,
    "accuracy": 100
}

driver = webdriver.Chrome()
driver.execute_cdp_cmd("Page.setGeolocationOverride", params)
driver.get('https://www.google.com/maps')

关于python - 如何在 Python/Chromedriver/Selenium 中设置模拟地理位置长/纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58514585/

相关文章:

Python - 创建具有相关数值变量的数据集

python - Python中为什么写round(x[,n])而不写round(x,n)?

python - 为什么 FAST/ORB 不能在图像边缘附近找到关键点

使用 cucumber-junit 和 Java 通过步骤定义文件执行 cucumber 功能文件时出现 java.lang.NullPointerException

javascript - Number.toString 在 Firefox 和 Chrome 中的不同精度

python - 可移植非关系数据库

c# - Selenium ChromeDriver 切换选项卡

java - 如何检查页面上是否出现了一些文本数据

http - 使用 Chrome/WebKit 调试 Access-Control-Allow-Origin

javascript - chrome应用程序如何触发chrome.printer Provider事件