2014-02-07 50 views
4

接受鍍鉻權限請求我有一個HTML/JavaScript文件與谷歌的網絡語音API和我做使用Selenium測試,但是每次我進入瀏覽器請求許可使用我的麥克風的網站,我必須點擊在'允許'上。使用硒

我如何在自動允許硒點擊?

+0

您可以使用Firefox?我在firefox中使用這些對話框的經驗是,您必須將您的配置文件設置爲默認允許。從1年前開始,[您無法使用自定義Chrome配置文件](http://stackoverflow.com/questions/13840855/selenium-webdriver-python-opening-chrome-browser-to-run-test-case-does - 不加載),我沒有看到任何相反的事情。此外,我試圖設置一個鉻配置文件,以允許默認使用麥克風,該菜單不適用於我。它看起來像[已知的錯誤](https://code.google.com/p/chromium/issues/detail?id=248987) – ExperimentsWithCode

+0

Unfortunatley我必須使用chrome,因爲Google語音僅適用於Chrome瀏覽器 –

+0

您可以檢查查看是否可以將麥克風的例外添加到您的配置文件中。它不適用於我的機器,但也許它會適用於您的機器。 1.打開一個新的標籤 2.在瀏覽器菜單中,單擊偏好 3.單擊顯示高級設置(其在設置選項卡,如果你不打開該網頁)下隱私 4.單擊內容設置5.向下滾動到媒體,然後單擊管理例外 6.從這裏您應該可以添加網站並將其設置爲允許麥克風 – ExperimentsWithCode

回答

7

@ExperimentsWithCode

謝謝您的回答再次,我已經花了差不多一整天今天試圖找出如何做到這一點,我也試了你r建議您在哪裏添加該標誌--disable-user-media-security鉻,不幸的是它不適合我。

但是我認爲一個非常簡單的解決方案:

要自動點擊允許所有我需要做的就是按TAB鍵三次,然後按Enter。所以我寫了這個程序來自動完成這個工作,並且它能夠工作!

第一個選項卡時,我的HTML頁面打開引導我到我的輸入框,第二個地址欄和允許按鈕第三,然後按確定鍵被按下按下。

Python程序使用硒以及PyWin32綁定。


感謝您抽出寶貴時間,盡力幫助我,非常感謝。

+0

很高興你能工作! – ExperimentsWithCode

+0

如果你可以給我你的電子郵件,我會給你一個視頻 –

+0

這很酷。我應該想到這一點。我以前閱讀過這方面的內容,但是我使用的是Mac,所以PyWin32不適合我,並且我還沒有找到合適的替代品。謝謝你的提議! – ExperimentsWithCode

2

所以,我只是碰到了another question詢問有關禁用不同的提示框。看起來你可能有辦法實現你的目標。

This page列表選項啓動鉻。其中一個選項是

所以,也許這會爲你工作

--disable-user-media-security 

「訪問像攝像頭和麥克風,用戶媒體設備時,特別是在非HTTPS網頁禁用一些安全措施」:

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 

chrome_options = Options() 
chrome_options.add_argument("--disable-user-media-security=true") 

driver = webdriver.Chrome(executable_path="path/to/chromedriver", chrome_options=chrome_options) 
0

【JAVA】:是的,有一個簡單的方法來點擊使用機器人java.awt中

public void allowGEOLocationCapture(){ 
    Robot robot = null; 
    try { 
     robot = new Robot(); 
     robot.keyPress(KeyEvent.VK_TAB); 
     robot.keyPress(KeyEvent.VK_ENTER); 
     robot.delay(600); 
    } catch (AWTException e) { 
     getLogger().info(e); 
    } 
} 
6

與此頗有幾分按倒自己允許按鈕。

最簡單的方法是避免將瀏覽器開關的權限提示設爲add --use-fake-ui-for-media-stream

下面是從@ ExperimentsWithCode的回答有些無恥地修改代碼:

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(executable_path="path/to/chromedriver", chrome_options=chrome_options) 
0

您可以允許使用add_experimental_option,如下圖所示。

from selenium.webdriver.chrome.options import Options 
chrome_options = Options() 
chrome_options.add_experimental_option('prefs',{'profile.default_content_setting_values.notifications':1}) 
driver = webdriver.Chrome(chrome_options=chrome_options) 
0

當心Mohana Latha的JAVA答案!代碼只是按下按鈕,從不釋放它們。這會在稍後帶來一系列問題。

使用這個代替:

// opening new window 
    Robot robot; 
    try { 
     robot = new Robot(); 
     robot.keyPress(KeyEvent.VK_CONTROL); 
     robot.delay(100); 
     robot.keyPress(KeyEvent.VK_N); 
     robot.delay(100); 
     robot.keyRelease(KeyEvent.VK_N); 
     robot.delay(100); 
     robot.keyRelease(KeyEvent.VK_CONTROL); 
     robot.delay(100); 
    } catch (AWTException e) { 
     log.error("Failed to press buttons: " + e.getMessage()); 
    }