Как включить доступ к медиаустройству в браузере Edge с помощью Selenium? - PullRequest
0 голосов
/ 18 октября 2019

У меня есть тест Selenium, который я хочу запустить в Edge на странице, которая использует веб-камеру и микрофон. Чтобы эти мультимедийные устройства работали в браузере, пользователь должен разрешить сайту доступ к устройству.

Это краткий пример, который я сделал, который иллюстрирует такое поведение в Edge: https://jsfiddle.net/12t3nofL/

Вы должны заметить всплывающую панель в нижней части экрана, мне нужно, чтобы это автоматически разрешалось в моей автоматизации.

Я уже нашел эти существующие Q / As на SO, которые предполагают, что есть способразрешить мультимедийные устройства с помощью опций веб-драйвера, но они просто не работают для меня:

как разрешить использование микрофона / камеры в веб-браузере на краю в зависимости от селена

Как включить доступ к «Mircophone» в браузере Edge с помощью Selenium?

Это мой код (сначала вам может понадобиться pip install selenium==3.141.0):

from selenium import webdriver
from selenium.webdriver.edge.options import Options
options = Options()
options.set_capability("dom.webnotifications.enabled", 1)
options.set_capability("permissions.default.microphone", 1)
options.set_capability("permissions.default.camera", 1)
capabilities = options.to_capabilities()
driver = webdriver.Edge(capabilities=capabilities)
driver.get('https://jsfiddle.net/12t3nofL')

Иполоса разрешений все равно всплывает внизу каждый раз.

Я нахожусь на Selenium 3.141.0 и Python 3.7.0 (хотя у меня та же проблема в 2.7).

Примечание: из-за другихпо причинам, у меня есть Edge для очистки сессии при выходеkies и кеш не сохраняются - в попытке имитировать свежий профиль, который вы получаете с помощью автоматического Chrome.

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Я нашел решение, которое работает довольно хорошо. Вместо того чтобы пытаться нажать кнопку, чтобы разрешить использование мультимедийных устройств, я могу добавить сайт в список разрешенных сайтов мультимедийных устройств в реестре. После этого я могу сразу же перейти на сайт, на котором требуются мультимедийные устройства, и без всплывающего окна.

Требуемый путь к реестру:

HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\MediaCapture\AllowDomains

. on.

Там вы хотите создать ключ DWORD протокола и IP / FQDN, например, http://10.0.0.2 или https://example.com, а значение Edge, установленное при разрешении доменов, равно 3, поэтомуЯ использую это.

В моем конкретном случае я переключился на IronPython, чтобы я мог легко подключаться к вызовам Windows API. Вот фрагмент моего кода для этой работы.

from Microsoft.Win32 import Registry

def add_edge_media_domain(domain):
    path = "HKEY_CURRENT_USER\\SOFTWARE\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\CurrentVersion\\AppContainer\\Storage\\microsoft.microsoftedge_8wekyb3d8bbwe\\MicrosoftEdge\\MediaCapture\\AllowDomains"
    Registry.SetValue(path, domain, 3)

Прежде чем позвонить driver.get(url), я звоню add_edge_media_domain(trim_url(url)), где trim_url просто обрезает часть пути от URL.

0 голосов
/ 21 октября 2019

Я воспроизвел проблему на своем компьютере, но я думаю, что это поведение Windows, и мы не можем установить с помощью селена.

Из этой статьи мы видим, что:

Как разрешить веб-сайту использовать вашу камеру или микрофон при просмотре в Microsoft Edge

Вы можете использовать камеру и микрофон для веб-сайтов в Microsoft Edge. Однако даже если ваша камера и микрофон включены для Microsoft Edge, вам все равно придется дать разрешение отдельным веб-сайтам, чтобы они могли использовать вашу камеру и микрофон. Вот как это делается:

  1. Перейдите на веб-сайт, который хочет использовать ваш микрофон и / или камеру.
  2. Если появится диалоговое окноспрашивая, хотите ли вы дать веб-сайту разрешение на использование вашей камеры или микрофона, выберите Разрешить один раз или Всегда разрешать или закройте диалоговое окно, чтобы заблокировать доступ.

После получения разрешения мыВы можете найти это разрешение в разделе «Управление разрешениями» (Edge browser , настройка => Advanced => Управление разрешениями ), снимок экрана, как показано ниже:

enter image description here

Из вашего описания при выходе из браузера Edge вы будете очищать сеансы, файлы cookie и кэш, если вы не хотите разрешать, разрешение каждый раз, вы можете снять флажок Параметр Разрешения веб-сайта (снимок экрана, как показано ниже), запросы разрешений будут отображаться только при первом посещении страницы.

enter image description here

...