【问题标题】:Using Selenium/WebDriver and Python, how do I suppress the prompt to share my camera and microphone?使用 Selenium/WebDriver 和 Python,如何抑制共享我的相机和麦克风的提示?
【发布时间】:2014-02-14 03:44:33
【问题描述】:

我在 Python 中使用 Selenium 来自动化远程浏览器。浏览器需要访问其网络摄像头和麦克风。当我导航到请求访问的页面时,Firefox 会显示一个弹出窗口,询问“您想与 [host] 共享您的摄像头和麦克风吗?”

此窗口不是浏览器页面的一部分,因此无法通过 Selenium 检测或控制。

此行为由 Firefox 'about:config' 页面中的 media.navigator.permission.disabled 选项控制。如果此选项设置为“true”,则应自动授予对摄像头的访问权限。

当我将该选项设置为“true”时,它只会在我手动运行 Firefox 时消除提示。当我通过 Selenium 运行 Firefox 时,我仍然得到提示。

我怎样才能抑制这个提示,并自动授予权限?

【问题讨论】:

    标签: python firefox selenium selenium-webdriver


    【解决方案1】:

    问题在于 Firefox 配置文件。 Selenium 为每个浏览器实例创建一个新的临时配置文件。此配置文件与您手动启动 Firefox 时使用的配置文件是分开的。

    因此,当您在 about:config 中将 media.navigator.permission.disabled 设置为“true”时,您只会为您的个人资料这样做,而不是为 Selenium 使用的个人资料。

    有两种方法可以解决这个问题:

    1. 告诉 Selenium 要使用哪个现有配置文件。

      为此,您必须首先确定您使用的是哪个配置文件。为此,请关闭所有 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
      

      这告诉 Selenium 使用 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 然后将使用此配置文件,并且不应提示您访问相机的权限。

      请注意,此方法比第一种方法花费更多时间。

    【讨论】:

    • 要么你非常很快找到了你自己问题的答案,要么你打算把它作为一个教程。
    【解决方案2】:

    您可以使用选项:

    from selenium import webdriver
    from selenium.webdriver.firefox.options import Options
    
    options = Options()
    options.set_preference("media.navigator.permission.disabled", True)
    browser = webdriver.Firefox(options=options)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      相关资源
      最近更新 更多