[英]How do I allow Chrome to use my microphone programmatically?
我目前正在嘗試運行一些使用 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();
它也不起作用! 我想這不是一個普通的警報。
有用的鏈接:
如何以編程方式授予他們權限?
是否有任何標志或其他方式解決此問題?
有點晚了,但在此處粘貼了如何為其他尋求相同操作的人。
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();
每次運行 selenium 時都會加載一個新的配置文件,因此您對首選項和網站權限所做的更改不會在會話之間保留。 為了修改這個,我們需要告訴 selenium 加載哪個配置文件。
第 1 步。找到您的 Chrome 首選項文件: www.forensicswiki.org/wiki/Google_Chrome#Configuration
步驟 2. 將文件夾Default
復制到某處。 我假設它被復制到/some/path/allow-mic/Default
。
替代步驟 3(這更容易):在使用 Chrome 復制Default
訪問localhost:1337
並將麥克風設置為始終允許之前。
步驟 3. 編輯allow-mic/Default/Preferences
,在彼此中找到標簽"profile"
、 "content_settings"
和"exceptions"
並添加
"media_stream_mic":{"http://localhost:1337,*":
{"last_used":1470931206,
"setting":1} },
到"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/
來檢查是否正在使用正確的首選項集(配置文件路徑)。
對於那些使用 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)
您可以通過向 chromedriver 提供hardware.audio_capture_allowed_urls首選項來將音頻捕獲的 url 列入白名單。
...
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)
同樣,用於Splinter
from splinter import Browser
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--use-fake-ui-for-media-stream")
Browser('chrome', ** {'executable_path':'chromedriver'},options=chrome_options)
如果您想使用麥克風,
chrome_options = Options()
chrome_options.add_experimental_option('prefs',{'profile.default_content_setting_values.media_stream_mic':1})
driver = webdriver.Chrome(path,chrome_options=chrome_options)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.