首页 > 解决方案 > 如何在 Python 中更改 chrome selenium 驱动程序的地理位置?

问题描述

我试图欺骗 chromedriver 让它相信它在不同的城市运行。在正常情况下,这可以很容易地手动完成,如快速图表所示

这里

然后,当谷歌搜索完成时,新的坐标就会被使用,并显示通常来自该位置的结果。当您查看 Google 搜索页面的底部时,您可以确认这是否有效

这里.

但是,Selenium 只能控制浏览器显示的内容,而不是浏览器本身。我不能告诉 Selenium 自动单击更改坐标所需的按钮。我尝试了此处发布的解决方案,但这不适用于 Python,即使在我尝试调整脚本之后,似乎也没有发生任何事情。

是否有一个可行的 browser.execute_script() 参数,或者这是更改地理位置的错误方法?

标签: pythonselenium

解决方案


您可以通过导入 Selenium DevTools 包来做到这一点。请参阅下面的完整 java 代码示例:

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.DevTools;

public void geoLocationTest(){
  ChromeDriver driver = new ChromeDriver();
  Map coordinates = new HashMap()
  {{
      put("latitude", 50.2334);
      put("longitude", 0.2334);
      put("accuracy", 1);
  }};    
  driver.executeCdpCommand("Emulation.setGeolocationOverride", coordinates);
  driver.get("<your site url>");
}  

参考:硒文档


推荐阅读