如何通过selenium测试用例启用或禁用地理定位

mbjcgjjk  于 2023-01-20  发布在  其他
关注(0)|答案(2)|浏览(167)

我想允许/阻止我的当前位置可访问的网站上点击允许按钮弹出,我的chrome版本是62.0,chrome驱动程序版本是3.6.0和我使用ubuntu16.04和我的代码片段是,

ChromeOptions options = new ChromeOptions();
options.addArguments("--incognito");
options.addArguments("start-maximized");
options.addArguments("--disable-geolocation");
DesiredCapabilities capabilities=DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY,options);
driver = new ChromeDriver(capabilities);

但这是行不通的,有人能建议我完美的解决方案吗?

brccelvz

brccelvz1#

Robot r = new Robot();
r.keyPress(KeyEvent.VK_TAB);
r.keyRelease(KeyEvent.VK_TAB);
r.keyPress(KeyEvent.VK_TAB);
r.keyRelease(KeyEvent.VK_TAB);
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);

使用java.awt.Robot类进行此操作,首先手动测试,然后可以根据需要更改密钥处理程序。

ngynwnxp

ngynwnxp2#

对于那些寻找一种方法来做到这一点没有出机器人,你可以这样做的选项:要拒绝,请将profile.default_content_setting_values.geolocation设置为1,要自动接受,请将其设置为2(这似乎是当前的默认值)

ChromeOptions options = new ChromeOptions();
    
    ArrayList<String> opArgList = new ArrayList<>(); // using an array list (so we can extend it with other passed in options)
    opArgList.add("--no-sandbox");
    opArgList.add("--disable-dev-shm-usage");
    String[] opArg = opArgList.toArray(new String[0]);
        
    HashMap<String, Object> prefs = new HashMap<String, Object>();
    prefs.put("profile.default_content_setting_values.geolocation", 1); 
    options.setExperimentalOption("prefs", prefs);
    options.addArguments(opArg); 

    driver = new RemoteWebDriver(new URL("http://localhost:4444/"), options);

相关问题