使用RSelenium在Firefox中设置地理位置

问题描述

我正在EC2服务器上使用RSelenium进行多个项目。
我正在尝试在Firefox配置文件的参数中自动设置位置,但不确定在哪里以及如何包含它们。
我会假设在makeFirefoxProfile函数中的某个位置,但不确定。

fprof <- makeFirefoxProfile(list("?"))

remDr <- remoteDriver(remoteServerAddr = "ec2-XX-XX-XXX-XX.eu-west-3.compute.amazonaws.com",port = 4445L,extraCapabilities = fprof)

remDr$open()

任何想法应该怎么做?谢谢!

[编辑1]: 我的Firefox个人资料信息似乎位于此文件夹中:

enter image description here

解决方法

尝试以下方法(对我有用)。我使用了args的额外功能来将配置文件目录传递给驱动程序:

remDr <- remoteDriver(remoteServerAddr = "ec2-XX-XX-XXX-XX.eu-west-3.compute.amazonaws.com",port = 4445L,extraCapabilities = list("args","--profile /your/profile/directory"))
,

使用ChromeDriver,可以轻松实现自动设置位置。

Chrome Devtools

Selenium 4 alpha版本通过DevTools接口向我们介绍了对 Chrome DevTools协议的本机支持,这有助于我们获取Chrome开发属性,例如应用程序缓存,提取,网络,性能,探查器,资源定时,安全性和目标CDP域等。

要在 Chrome浏览上下文中中设置位置,可以使用以下解决方案:

  • 解决方案:

    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("ec2-XX-XX-XXX-XX.eu-west-3.compute.amazonaws.com");
    }