Как разрешить Chrome программно использовать микрофон?
в настоящее время я пытаюсь запустить некоторые тесты, сделанные с помощью webdriverjs и chromedriver, но им нужны разрешения микрофона.
это всплывающее окно, которое появляется:
Я пробовал:
chromedriver.start(['--disable-popup-blocking']);
driver = new Webdriver.Builder()
.withCapabilities(Webdriver.Capabilities.chrome())
.build();
но это не сработало.
Я тоже пробовал
driver.wait(Until.alertIsPresent(), config.TIMEOUT, 'Alert did not show up');
driver.switchTo().alert().accept();
это не работает! Думаю, это не обычная тревога.
Полезные ссылки:
запуск Chrome список аргументов
параметры Chrome для java и ruby
как я могу дать им разрешения программно?
есть ли флаг или какой-то другой способ обойти это?
4 ответов
новый профиль загружается каждый раз при запуске selenium, поэтому изменения, внесенные в настройки и разрешения веб-сайта не сохраняются между сеансами. Чтобы изменить это, нам нужно сообщить selenium, какой профиль загрузить.
Шаг 1. Найдите файл настроек Chrome:www.forensicswiki.org/wiki/Google_Chrome#Configuration
Шаг 2. Скопируйте папку Default
куда-то. Я предполагаю, что он скопирован в /some/path/allow-mic/Default
.
альтернатива Шаг 3 (это проще):
Перед копированием Default
посетить localhost:1337
С Chrome и установите микрофон, чтобы всегда разрешать.
Шаг 3. Edit allow-mic/Default/Preferences
найдите теги "profile"
, "content_settings"
и "exceptions"
внутри друг друга и добавить
"media_stream_mic":{"http://localhost:1337,*":
{"last_used":1470931206,
"setting":1} },
to "exceptions"
. Вы должны закончить с чем-то вроде:
...
"profile":{
...
"content_settings": {
...
"exceptions": {
...
"media_stream_mic":{"http://localhost:1337,*":
{"last_used":1470931206,
"setting":1} },
...
},
},
},
...
Шаг 4:
Настроить selenium
чтобы использовать отредактированные настройки:
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);
вы можете проверить, что правильный набор настроек (путь к профилю) используется открытие chrome://version/
.
немного поздно, но вставить, как это сделать здесь для других, ищущих то же самое.
const webdriver = require('selenium-webdriver'), By = webdriver.By, until = webdriver.until,Builder= webdriver.Builder;
var chrome = require('selenium-webdriver/chrome');
var chromeOptions = new chrome.Options()
.addArguments('allow-file-access-from-files')
.addArguments('use-fake-device-for-media-stream')
.addArguments('use-fake-ui-for-media-stream');
var driver = new webdriver.Builder()
.forBrowser('chrome')
.setChromeOptions(chromeOptions);
driver = driver.build();
вы можете белый список url для аудио-захвата, предоставив chromedriver с оборудование.audio_capture_allowed_urls предпочтения.
...
chrome_options = Options()
prefs = {"hardware.audio_capture_allowed_urls" : ["example.org"]}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
для тех, кто использует Python, это сработало для меня:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--use-fake-ui-for-media-stream")
driver = webdriver.Chrome(chrome_options=chrome_options)