簡體   English   中英

如何允許 Chrome 以編程方式使用我的麥克風?

[英]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();

它也不起作用! 我想這不是一個普通的警報。

有用的鏈接:

Chrome 啟動參數列表

java 和 ruby​​ 的 Chrome 選項

Chromedriver github

如何以編程方式授予他們權限?

是否有任何標志或其他方式解決此問題?

有點晚了,但在此處粘貼了如何為其他尋求相同操作的人。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM