example chrome python firefox selenium selenium-webdriver

chrome - Detecta audio con Selenium Webdriver y Python



selenium python example (1)

Tengo problemas similares. Manejo mucho audio en la web. Tengo que automatizar verificaciones de degradación de audio, reproducciones de audio, etc. No pude encontrar realmente una biblioteca que me ayudara en Groovy o Ruby (no revisé Python), así que llamé a un programa instalado (sox) y verificaría en tiempo real si se escuchaba el audio o no.

Esta fue mi llamada / guión maravilloso:

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 }

Acerca de Core Audio y "Soundflower"

La llamada sox especifica la placa de audio con -t coreaudio (En Linux probablemente usaría alsa en lugar de ''coreaudio'' - coreauduio es la interfaz de audio OSX.) El parámetro "Soundflower" es el canal que creé en Soundflower. Esto fue importante para mí para grabar sonido de forma aislada (ya que estaba haciendo controles de calidad de audio). Por ejemplo, si usaste el canal predeterminado, como alsa predeterminado o coreaudio predeterminado , recuperará tu micrófono ... así que si el chico al lado tuyo estornuda ... corrompe la prueba.

Al usar un canal de audio virtual (como con Soundflower en OSX), puedes configurar todo tu audio para que salga "Soundflower" y luego ejecutar el comando sox en ese canal ... y solo estarás escuchando el sistema de audio que sale del canal virtual.

En su lugar, puede usar su canal predeterminado (pero terminará cuando escuche otros ruidos en la sala).

Ejecuté ese código de manera asincrónica usando tareas increíbles ... por lo que el código fue envuelto en algo así como:

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

Como escuchaba de forma asincrónica, no bloquearía el resto de la prueba.

El comando Sox

El comando en tiempo real real sox que utilicé, vino del video de este tipo (compruébalo ya que usa algunos parámetros diferentes):

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

Extendiéndolo

Lo impulsé un poco más al poder automatizar la grabación del audio reproducido a través del navegador y luego usar el algoritmo PESQ para determinar qué tan cerca estaba el audio grabado del audio original que se estaba reproduciendo. Si estás interesado en eso, no dudes en consultar mi publicación en él:

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

Python PCAP Scraping

Tal vez sin relación con lo que estás haciendo, pero también he jugado con el uso de la biblioteca Pyshark para reconstruir el audio de las capturas de paquetes ... es más complejo y tal vez más frágil. Pero si es de interés, aquí está mi implementación:

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

Tal vez no sea fácil de hacer, pero quiero poder cargar una página web en Selenium y probar si Flash o html5 reproducen audio automáticamente.

En teoría, cuando un usuario visita mis sitios puede ver la reproducción del video pero no el audio (forma correcta) A veces el audio se reproducirá automáticamente con el video, esto es lo que no quiero.

Me pregunto si hay una forma de detectar si CUALQUIER audio se está reproduciendo a través de python y firefox. Mis pruebas internas cargarán la página y harán bastantes comprobaciones de selenio para asegurarse de que todo esté bien. Lo que me gustaría hacer es agregar una prueba que también verifique con python o selenio si el audio está sonando y marcarlo.

¿Algunas ideas?