【问题标题】:Detect Audio with Selenium Webdriver and Python使用 Selenium Webdriver 和 Python 检测音频
【发布时间】:2014-10-21 13:52:33
【问题描述】:

也许不容易做到,但我希望能够在 Selenium 中加载网页并测试 flash 或 html5 是否自动播放音频。

理论上,当用户访问我的网站时,他们可以看到视频播放但看不到音频(正确方式) 有时音频会随着视频自动播放,这是我不想要的。

我想知道是否有办法检测是否有任何音频正在通过 python 和 firefox 播放?我的内部测试将加载页面并进行大量硒检查以确保一切正常。我想做的是添加一个测试,如果音频正在播放并标记它,该测试还使用 python 或 selenium 检查。

有什么想法吗?

【问题讨论】:

  • 恐怕这不是 webdriver 可以处理的。
  • 我想了这么多。可能不得不依靠 python 或其他东西。
  • 除了查询操作系统的音频系统来报告 Selenium 启动的浏览器是否正在向它发送任何音频,我不知道你会怎么做。

标签: python firefox selenium selenium-webdriver


【解决方案1】:

我也有类似的问题。我处理网络上的大量音频。我必须自动检查音频降级、音频播放等。我在 Groovy 或 Ruby 中找不到帮助我的库(我没有检查 Python),所以我调用了一个已安装的程序 (sox)如果听到音频,它会实时检查。

这是我的常规调用/脚本:

 def audioCheck = "sox -t coreaudio Soundflower /Users/me/project/record.wav silence 1 0.1 1% 1 .1 1%".execute()
             audioCheck.waitFor()
            println "EXIT VALUE FOR SOX IS: ${audioCheck.exitValue()}"

            if(audioCheck.exitValue() == 0){
                 // some stuff would happen now, if exit code is 0
            }

关于 Core Audio 和“Soundflower”

sox 调用使用 -t coreaudio 指定音频板(在 Linux 上,您可能会使用 alsa 而不是 'coreaudio' - coreaudio 是 OSX 音频接口。) "Soundflower " 参数是我在 Soundflower 中创建的通道。单独录制声音对我来说很重要(因为我正在检查音频质量)。例如,如果您使用默认通道,如 alsa defaultcoreaudio default ,它会拿起你的麦克风......所以如果你旁边的人打喷嚏......它会破坏测试。

通过使用虚拟音频通道(如 OSX 上的 Soundflower),您可以将所有音频“输出”设置为输出“Soundflower”,然后在该通道上运行 sox 命令...收听来自虚拟通道的系统音频。

您可以改用默认频道(但它会在听到房间内的其他噪音时结束。)

我使用 groovy 任务异步运行该代码...因此该代码被包装在以下内容中:

def listener = task { ... my script above ... }

由于它是异步监听的,它不会阻塞其余的测试。

Sox 命令

我使用的实际 sox 实时命令来自这个人的视频(看看他使用了一些不同的参数):

https://www.youtube.com/watch?v=Q5ntlKE0ze4

扩展它

通过能够自动录制通过浏览器播放的音频,然后使用 PESQ 算法确定录制的音频与正在播放的原始音频的接近程度,我进一步推动了它。如果您对此感兴趣,请随时查看我的帖子:

http://sdet.us/webrtc-audio-quality-automation-with-pesq/

Python PCAP 抓取

也许与您正在做的事情无关,但我也尝试过使用 Pyshark 库从数据包捕获中重建音频......它更复杂,也许更脆弱。但如果有兴趣,这是我的实现:

http://sdet.us/python-pcap-parsing-audio-from-sip-call/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-27
    • 2014-08-21
    • 2013-07-11
    • 2014-10-31
    • 2017-04-28
    • 1970-01-01
    • 2021-07-12
    • 2014-09-16
    相关资源
    最近更新 更多