Chrome配置文件可以弹出“了解您的位置”

时间:2016-01-11 12:15:50

标签: java google-chrome selenium-webdriver selenium-chromedriver

我正在使用chromedriver.exe二进制文件在Google Chrome中运行我的测试。在一个特定页面,这个弹出窗口不会干预/影响测试,但客户端不希望看到它。可能的原因可能是,在测试用例失败的情况下,它会捕获屏幕截图以及弹出窗口。

如何创建会禁用此弹出框的profilecapabilities

enter image description here

这样的事情:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data");

修改

此代码停止弹出“知道您的位置”,但生成了另一个弹出窗口。所以它只是部分工作。     options.addArguments("--enable-strict-powerful-feature-restrictions"); driver = new ChromeDriver(options);

enter image description here

5 个答案:

答案 0 :(得分:3)

使用--disable-geolocation,Chrome选项如下:

options.addArguments("--disable-geolocation");

还可以在以下链接中找到chrome命令行开关列表:

http://peter.sh/experiments/chromium-command-line-switches/

答案 1 :(得分:1)

此代码解决了我的地理定位问题

options.AddUserProfilePreference("profile.default_content_setting_values.geolocation", 2);

答案 2 :(得分:0)

添加以下命令行参数,这将限制地理定位功能。

String url = "http://ctrlq.org/maps/where/";

//Chromedriver Version : 2.19.346078
System.setProperty("webdriver.chrome.driver", "CHROMEDRIVERPATH");

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.addArguments("--enable-strict-powerful-feature-restrictions");

WebDriver driver = new ChromeDriver(options);
driver.get(url);

另一种方式是在推出Chrome浏览器后,通过下面的selenium代码工具将禁用地理位置弹出窗口。

  • 转到:chrome:// settings / content

  • 在该位置选择'不允许任何网站跟踪您的实际位置'选项。

Do not allow any site to track your physical location

  • 点击完成

答案 3 :(得分:0)

以下列方式声明对我有用。

// Declare variables
 ChromeOptions options = new ChromeOptions();
 Map<String, Object> prefs = new HashMap<String, Object>();
 Map<String, Object> profile = new HashMap<String, Object>();
 Map<String, Object> contentSettings = new HashMap<String, Object>();
// Specify the ChromeOption we need to set
 contentSettings.put(“geolocation”, 1);
 profile.put(“managed_default_content_settings”, contentSettings);
 prefs.put(“profile”, profile);
 options.setExperimentalOption(“prefs”, prefs);
// Declare the capability for ChromeOptions
 caps.setCapability(ChromeOptions.CAPABILITY, options);

答案 4 :(得分:0)

--disable-geolocation 标志对我没有任何作用。 我也在隐身模式下运行,所以这可能会影响某些事情。

我可以确认以下 python selenium 代码将禁用位置弹出窗口

        prefs = {
            "profile.default_content_setting_values.geolocation": 2,
        }
        options.add_experimental_option("prefs", prefs)

为了深入挖掘。 如果您需要更改任何设置。可以通过比较保存的“${PROFILE}Preferences”文件来完成

我建议总是从一个干净的配置文件开始,如下所示,然后在代码中设置您想要的任何首选项。以获得可重复的结果。

        data_dir = "tmp/remote-profile"
        if os.path.exists(data_dir):
            shutil.rmtree(data_dir)
        options.add_argument("--user-data-dir=tmp/remote-profile")
        options.add_argument('--profile-directory=Default')

在上述情况下,首选项文件将位于 tmp/remote-profile/Default/Preferences