python - 如何在 Python 中更改 chrome selenium 驱动程序的地理位置?
问题描述
我试图欺骗 chromedriver 让它相信它在不同的城市运行。在正常情况下,这可以很容易地手动完成,如快速图表所示
然后,当谷歌搜索完成时,新的坐标就会被使用,并显示通常来自该位置的结果。当您查看 Google 搜索页面的底部时,您可以确认这是否有效
.
但是,Selenium 只能控制浏览器显示的内容,而不是浏览器本身。我不能告诉 Selenium 自动单击更改坐标所需的按钮。我尝试了此处发布的解决方案,但这不适用于 Python,即使在我尝试调整脚本之后,似乎也没有发生任何事情。
是否有一个可行的 browser.execute_script() 参数,或者这是更改地理位置的错误方法?
解决方案
您可以通过导入 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>");
}
参考:硒文档
推荐阅读
- nginx - Nginx www 到非 www 页面不工作
- c# - Blazor WASM:类型 T 的未处理异常对象具有与名称匹配的属性,但未应用 [ParameterAttribute]
- laravel - Laravel 扩展更新问题(VS Code)(已解决)
- opensea - 孟买网络代币未在 testnet.opensea.io 中列为“由`you` 创建”
- node.js - 使用凭证将 docker 映像部署为 IBM Cloud Action
- javascript - 在javascript中创建一个查找素数函数
- html - 如何响应地使“main_body”div的高度等于它的父div
- ios - Flutter 与 Firebase 消息传递。iOS 设备不接收仅数据消息
- php - 如何使用 PHP 脚本从填写好的表单中获取电子邮件?
- python-3.x - 如何在pydantic中使用一个类的一个类属性作为另一个类中的类型?