selenium执行chrome允许麦克风等权限

问题说明

        我用selenium执行webUI自动化,遇到如下图的弹框,chrome要允许麦克风权限,但是这个弹框无法用元素定位到,也不是alert等类似的弹框,解决方法如下。

解决方法

        在chrome options中设置配置即可。

options = webdriver.ChromeOptions()

# 默认chrome允许使用麦克风和摄像头权限(1允许2不允许)
options.add_experimental_option('prefs', 
                        {'profile.default_content_setting_values.media_stream_mic': 1,
                         'profile.default_content_setting_values.media_stream_camera': 1})

driver = webdriver.Chrome(options=options)

        顺便附上火狐浏览器的设置方法。

FirefoxOptions options = new FirefoxOptions();
options.addPreference("permissions.default.microphone", 1);
options.addPreference("permissions.default.camera", 1);

扩展

        我一般会把options封装成一个函数,然后生成driver对象的时候再调用,这样做的目的就是可以把许许多多的options项单独整一个py文件来管理,一套东西带着走。

【chrome_options.py】文件代码如下:

from selenium import webdriver


def options():
    # 创建chrome options对象
    options = webdriver.ChromeOptions()

    # 窗口最大化
    options.add_argument('start-maximized')

    # 取消控制台一些无用输出信息
    options.add_argument('--log_level=3')
    options.add_argument('--disable-gpu')

    # 忽略证书错误,不需要手动点高级选项
    options.add_argument('--ignore-certificate-errors')

    # 去除小黄条和取消控制台无用信息
    options.add_experimental_option('excludeSwitches', 
                                         ['enable-automation', 'enable-logging'])

    # 默认chrome取消弹出记住密码框,允许使用麦克风、摄像头、地图定位、通知权限(1允许2不允许)
    options.add_experimental_option('prefs',
           {'credentials_enable_service':False,'profile.password_manager_enable': False,
            'profile.default_content_setting_values.media_stream_mic': 1,  # 麦克风
            'profile.default_content_setting_values.media_stream_camera': 1,  # 摄像头
            'profile.default_content_setting_values.geolocation': 1,  # 定位
            'profile.default_content_setting_values.notifications': 1})  # 通知

    # 无头模式(以无头模式运行时,要设置window-size,不然有些元素会报element not interactable)
    # options.add_argument('--headless')
    # options.add_argument('--window-size=1920,1080')

    return options

调用options函数代码如下:

from chrome_options import options

driver = webdriver.Chrome(options=options())

猜你喜欢

转载自blog.csdn.net/v781423070/article/details/131393602