【问题标题】:Selenium Chrome driver crashes on macOSSelenium Chrome 驱动程序在 macOS 上崩溃
【发布时间】:2019-11-12 17:44:00
【问题描述】:

我有一个 WebRTC 项目的自动化测试。当我尝试使用具有允许使用权限的麦克风时,Chrome 驱动程序在 macOS 上崩溃。在 Linux 上一切正常,只有 macOS 存在问题。

    val options = ChromeOptions()
    val prefs = HashMap<String, Any>()
    prefs["intl.accept_languages"] = "de"
    prefs["profile.default_content_setting_values.media_stream_mic"] = 1
    options.setExperimentalOption("prefs", prefs)
    val driver = ChromeDriver(options) 

chrome驱动的日志:

[1111/144648.290128:WARNING:process_memory_mac.cc(93)] mach_vm_read(0x7ffee3670000, 0x2000): (os/kern) invalid address (1)
[1111/144648.443304:WARNING:system_snapshot_mac.cc(42)] sysctlbyname kern.nx: No such file or directory (2)
[1111/144648.462626:WARNING:crash_report_exception_handler.cc(239)] UniversalExceptionRaise: (os/kern) failure (5)
[1573480008.479][SEVERE]: Unable to receive message from renderer
[1573480008.479][INFO]: Waiting for pending navigations...
[1573480008.479][INFO]: Done waiting for pending navigations. Status: disconnected: not connected to DevTools
[1573480008.479][DEBUG]: DevTools HTTP Request: http://localhost:63323/json
[1573480008.480][DEBUG]: DevTools HTTP Request failed

有人知道可能导致崩溃的原因吗?任何设置,如内存等?或者这只是 selenium 中的一个错误?

【问题讨论】:

    标签: macos selenium selenium-chromedriver webrtc


    【解决方案1】:

    经过大量实验,我能够解决此问题。但我仍然无法解释为什么这只发生在 macOS 上。这似乎是根本原因在于实验选项。也许它被称为实验性是有充分理由的 =) 我发现可以使用以下选项,而不是使用 prefs["profile.default_content_setting_values.media_stream_mic"] = 1 来允许使用麦克风:options.addArguments("--use-fake-ui-for-media-stream") 适用于 Linux 和 macOS。 chrome驱动的完整设置如下:

    val options = ChromeOptions()
    val prefs = HashMap<String, Any>()
    prefs["intl.accept_languages"] = "de"
    options.setExperimentalOption("prefs", prefs)
    options.addArguments("--use-fake-ui-for-media-stream")
    val driver = ChromeDriver(options) 
    

    另外对于 Firefox:

    val profile = FirefoxProfile()
    profile.setPreference("intl.accept_languages", "de")
    
    val options = FirefoxOptions()
    options.profile = profile
    options.addPreference("media.navigator.streams.fake", true)
    return BrowserProfile.initDriver(FirefoxDriver(options))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 2021-02-08
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多