selenium+chrome使用webrtc音频或视频时,默认开启麦克风和摄像

selenium+chrome使用webrtc音频或视频时,默认开启麦克风和摄像

1.第一种

用webrtc进行音视频通话,前提是先默认chrome开启音视频,代码如下,其中两处写了重点

class WebRTC:
 
    def __init__(self):
        # chrome浏览器设置
        ch_option = webdriver.ChromeOptions()
        prefs = {
            # chrome不弹出的“是否接受xxx通知”
            'profile.default_content_setting_values.notifications': 2,
            # chrome开启麦克风--重点
            "profile.default_content_setting_values.media_stream_mic": 1,
            # chrome开启摄像头--重点
            "profile.default_content_setting_values.media_stream_camera": 1  
        }
        ch_option.add_experimental_option('prefs', prefs)
        # chrome不显示是收到自动软件控制
        ch_option.add_experimental_option('excludeSwitches', ['enable-automation'])
        # 忽略证书错误,不需要手动点高级选项
        ch_option.add_argument('--ignore-certificate-errors')
        # 为媒体流使用假设备来替换实际的摄像头和麦克风
        # ch_option.add_argument('--use-fake-device-for-media-stream')
        # 通过选择媒体流的默认设备(例如 WebRTC)绕过媒体流信息栏。与 --use-fake-device-for-media-stream 一起使用。
        # ch_option.add_argument('--use-fake-ui-for-media-stream')  
        path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
        # chrome驱动路径
        chrome_driver = path + r'/data/browser_driver/chromedriver.exe'  
        self.browser = webdriver.Chrome(executable_path=chrome_driver, options=ch_option)

上述代码亲测成功,使用的主机物理摄像头和麦克风。

2.第二种

class WebRTC:
 
    def __init__(self):
        # chrome浏览器设置
        ch_option = webdriver.ChromeOptions()
        prefs = {
            # chrome不弹出的“是否接受xxx通知”
            'profile.default_content_setting_values.notifications': 2}
        ch_option.add_experimental_option('prefs', prefs)
        # chrome不显示是收到自动软件控制
        ch_option.add_experimental_option('excludeSwitches', ['enable-automation'])
        # 忽略证书错误,不需要手动点高级选项
        ch_option.add_argument('--ignore-certificate-errors')
        # 同时开启麦克风和摄像头--重点
        ch_option.add_argument('--use-fake-ui-for-media-stream')  
        path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
        # chrome驱动路径
        chrome_driver = path + r'/data/browser_driver/chromedriver.exe'  
        self.browser = webdriver.Chrome(executable_path=chrome_driver, options=ch_option)

3.例外情况

# 使用--use-fake-ui-for-media-stream,不要带--use-fake-device-for-media-stream
ch_option.add_argument('--use-fake-ui-for-media-stream')
# 为媒体流使用假设备来替换实际的摄像头和麦克风
ch_option.add_argument('--use-fake-device-for-media-stream')
 

这种情况无法使用物理摄像头和麦克风。

实际验证结果:用webrtc和手机APP进行通话,手机端:显示webrtc为绿屏(假视频),听到滴滴滴的声音

你可能感兴趣的:(web自动化,chrome,selenium,webrtc)