A fresh profile is loaded each time you run selenium, hence changes you make to the preferences and website permissions are not preserved between sessions. To amend this we need to tell selenium which profile to load.
Step 1. Find your Chrome preferences file: www.forensicswiki.org/wiki/Google_Chrome#Configuration
Step 2. Copy the folder Default
somewhere. I will assume it is copied to /some/path/allow-mic/Default
.
Alternative Step 3 (this is easier):
Before copying Default
visit localhost:1337
with Chrome and set mic to always allow.
Step 3. Edit allow-mic/Default/Preferences
, find the tags "profile"
, "content_settings"
and "exceptions"
within each other and add
"media_stream_mic":{"http://localhost:1337,*":
{"last_used":1470931206,
"setting":1} },
to "exceptions"
. You should end up with something like:
...
"profile":{
...
"content_settings": {
...
"exceptions": {
...
"media_stream_mic":{"http://localhost:1337,*":
{"last_used":1470931206,
"setting":1} },
...
},
},
},
...
Step 4:
Configure selenium
to use the edited preferences:
var chromedriver = require('chromedriver');
var Webdriver = require('selenium-webdriver');
var chrome = require('selenium-webdriver/chrome');
var opts = new chrome.Options();
opts.addArguments("user-data-dir=/some/path/allow-camera");
var driver = new chrome.Driver(opts);
You can check that the correct set of preferences (Profile path) are in use by opening chrome://version/
.
https:
pages you have to give permission only once. – Coccidlocalhost
is considered as a secure domain though (for development purposes). – Boraxhttp:
pages and once per domain onhttps:
pages. If user clickBlock
then microphone will be blocked for this domain. This is default behavior. – Coccid--use-fake-device-for-media-stream
did not work either – Deliquesce