Unfortunately, there's not a really good answer for this today. But we can add full support in a future release.
First, you can enable geoLocation access for specific sites in the Preferences file in the test profile. The easiest way to set it is in the browser.
Launch Chrome with the same command used by ChromeDriver (see the log file).
Navigate to the site needed, and accept the prompt to allow location access. After that, if you open settings, Site Settings, Location, the website should be listed under Allow.
Then, to find the Profile directory:
Open url chrome://version. Profile path is the profile folder.
You will want to copy this complete folder to another location with a descriptive name.
Preferences.txt contains the settings, but this file is not designed for human readability.
Then, when running ChromeDriver, you will have to add a command line argument for Chrome:
options.add_arguments("user-data-dir=<profiledir>")
where <profiledir> is a full path to the saved directory containing the modified preferences file.
Second, before w3c mode, ChromeDriver had a SetGeoLocation command. This was disabled for w3c mode since it's not in the new spec. We can reenable this for w3c mode. see
https://crbug.com/chromedriver/3180 The Java bindings still have a driver.setLocation command, but I don't see it in the python bindings. Python does have driver.execute_cdp_cmd, which should be able to call the right command; I will confirm this once the command is reenabled.
I'm sorry I don't know any workarounds for you today.