2014-01-23 1 views
2

Я использую Selenium в Python для автоматизации удаленного браузера. Браузеру нужен доступ к веб-камере и микрофону. Когда я перехожу к странице, запрашивающей доступ, Firefox показывает всплывающее окно, в котором спрашивается: «Вы хотите поделиться камерой и микрофоном с [host]?»Использование Selenium/WebDriver и Python, как я могу подавить приглашение поделиться своей камерой и микрофоном?

Это окно не является частью страницы браузера, поэтому Selenium не может быть обнаружен или управляемой.

Это поведение контролируется с опцией media.navigator.permission.disabled в странице «about: config» в Firefox. Если для этой опции установлено значение «истина», доступ к камере должен предоставляться автоматически.

Когда я устанавливаю эту опцию в значение «true», она исключает приглашение только при запуске Firefox вручную. Когда я запускаю Firefox через Selenium, я все равно получаю подсказку.

Как я могу подавить это приглашение и получить разрешение автоматически?

ответ

0

Проблема заключается в профилях Firefox. Selenium создает новый временный профиль для каждого экземпляра браузера. Этот профиль отделен от профиля, который вы используете при запуске Firefox вручную.

Таким образом, когда вы устанавливаете media.navigator.permission.disabled в 'true' в about: config, вы делаете это только для своего профиля, а не для профиля, который использует Selenium.

Есть два способа обойти это:

  1. Сообщить Селен, который существующий профиль использования.

    Для этого вы должны сначала определить, какой профиль вы используете. Для этого закройте все экземпляры Firefox, затем выполните firefox -p, чтобы запустить менеджер профилей. В большинстве случаев вы увидите один профиль с именем default.

    Используя этот профиль, перейдите на about:config и установите media.navigator.permission.disabled на true.

    Затем, когда вы запускаете сервер Selenium автономный, указать этот раздел:

    java -jar selenium-server-standalone-2.37.0.jar -Dwebdriver.firefox.profile=default 
    

    Это говорит Селен использовать default профиль, который имеет параметры, которые вы хотите.

  2. Создайте и настройте новый профиль для использования Selenium.

    Перед тем, как создать экземпляр браузера, необходимо создать профиль Firefox и настроить его для удовлетворения ваших потребностей:

    profile = webdriver.FirefoxProfile() 
    profile.set_preference ('media.navigator.permission.disabled', True) 
    profile.update_preferences() 
    

    Затем укажите этот профиль при создании экземпляра удаленного браузера:

    firefox = selenium.webdriver.remote.webdriver.WebDriver (command_executor=my_url, desired_capabilities=DesiredCapabilities.FIREFOX, browser_profile=profile) 
    

    Selenium будет использовать этот профиль, и вам не будет предложено получить разрешение на доступ к камере.

    Обратите внимание, что этот метод занимает больше времени, чем первый метод.

+3

Либо вы очень * быстро нашли ответ на свою собственную проблему, либо хотите, чтобы это было учебным пособием. – Arran

 Смежные вопросы

  • Нет связанных вопросов^_^