2014-08-27 13 views
8

के साथ ऑडियो का पता लगाएं शायद आसानी से नहीं किया जा सकता है, लेकिन मैं सेलेनियम में एक वेब पेज लोड करने में सक्षम होना चाहता हूं और परीक्षण करता हूं कि फ्लैश या एचटीएमएल 5 स्वचालित रूप से ऑडियो चलाता है या नहीं।सेलेनियम वेबड्राइवर और पायथन

सिद्धांत में जब कोई उपयोगकर्ता मेरी साइट पर जाता है तो वे वीडियो प्ले देख सकते हैं लेकिन कोई ऑडियो (सही तरीका नहीं) कभी-कभी ऑडियो वीडियो के साथ स्वचालित रूप से चलाएगा, यही वह नहीं है जो मैं नहीं चाहता।

मुझे आश्चर्य है कि क्या कोई ऑडियो पाइथन और फ़ायरफ़ॉक्स के माध्यम से चल रहा है या नहीं? मेरे आंतरिक परीक्षण पृष्ठ लोड करेंगे और यह सुनिश्चित करने के लिए कि कुछ भी अच्छा है, कुछ सेलेनियम जांच करें। मुझे क्या करना पसंद है यह एक परीक्षण जोड़ें जो ऑडियो खेल रहा है और इसे ध्वजांकित करते हुए पाइथन या सेलेनियम के साथ भी जांच करता है।

कोई विचार?

+2

मुझे डर है कि यह कुछ एक webdriver संभाल कर सकते हैं नहीं है हूँ: लेकिन अगर ब्याज की है, यहाँ मेरी कार्यान्वयन है। – alecxe

+0

मैंने यह बहुत सोचा। शायद पाइथन या कुछ और पर दुबला होना पड़ सकता है। –

+0

मैं कैसे आप ब्राउज़र सेलेनियम द्वारा शुरू की यह करने के लिए किसी भी ऑडियो भेज रहा है कि क्या रिपोर्ट करने के लिए ओएस 'ऑडियो सिस्टम क्वेरी करने के इस छोटे से करना चाहते हैं पता नहीं है। – Louis

उत्तर

6

मेरे पास समान समस्याएं हैं। मैं वेब पर बहुत सारे ऑडियो से निपटता हूं। मुझे ऑडियो गिरावट, ऑडियो नाटक इत्यादि के लिए चेक स्वचालित करना है। मुझे वास्तव में ग्रोवी या रूबी (मैंने पायथन की जांच नहीं की) में मेरी मदद करने के लिए लाइब्रेरी नहीं मिल सका, इसलिए मैंने एक स्थापित प्रोग्राम (एसओएक्स) और अगर ऑडियो सुना या नहीं तो यह वास्तविक समय की जांच करेगा।

यह मेरा ग्रूवी कॉल/लिपि था:

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 
      } 

मुख्य ऑडियो और "Soundflower"

सॉक्स कॉल (आयकर CoreAudio के साथ ऑडियो बोर्ड को निर्दिष्ट करता है आप लिनक्स पर के बारे में शायद 'कोरौडियो' के बजाय अल्सा का उपयोग करेगा - कोरौड्यूओ ओएसएक्स ऑडियो इंटरफ़ेस है।) "ध्वनिफ्लॉवर" पैरामीटर वह चैनल है जिसे मैंने साउंडफ्लॉवर में बनाया है। अलगाव में ध्वनि रिकॉर्ड करना मेरे लिए महत्वपूर्ण था (क्योंकि मैं ऑडियो गुणवत्ता जांच कर रहा था।) उदाहरण के लिए, यदि आपने डिफ़ॉल्ट चैनल का उपयोग किया है, जैसे अल्सा डिफ़ॉल्ट या कोरौडियो डिफ़ॉल्ट, यह आपके माइक को उठाएगा ... तो अगर आपके बगल में लड़का छींकता है ... यह परीक्षण को दूषित करता है।

वर्चुअल ऑडियो चैनल (जैसे ओएसएक्स पर साउंडफ्लॉवर के साथ) का उपयोग करके, आप अपने सभी ऑडियो "आउट" को "ध्वनिफ्लॉवर" पर जाने के लिए सेट कर सकते हैं, फिर उस चैनल पर सोक्स कमांड चलाएं ... और आप केवल वर्चुअल चैनल से बाहर आने वाले सिस्टम ऑडियो को सुनें।

इसके बजाय आप अपने डिफ़ॉल्ट चैनल का उपयोग कर सकते हैं (लेकिन यह खत्म हो जाएगा, जब यह कमरे में अन्य शोर सुनता है।)

मुझे लगता है कि कोड ग्रूवी कार्यों का उपयोग कर async भाग गया ... ताकि कोड की तरह कुछ में लपेटा गया था:

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

चूंकि यह अतुल्यकालिक रूप से सुन रहा था, यह शेष परीक्षण को अवरुद्ध नहीं करेगा।

सॉक्स आदेश

वास्तविक सॉक्स वास्तविक समय आदेश मैं करता था, इस आदमी के वीडियो से आया है (यह बाहर की जाँच के रूप में वह कुछ विभिन्न मापदंडों का उपयोग करता है):

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

विस्तार यह

मैं इसे रिकॉर्डिंग को स्वचालित करने में सक्षम होने का ऑडियो के माध्यम से खेला से थोड़ा आगे धक्का दिया ब्राउज़र और फिर पीईएसक्यू एल्गोरिदम का उपयोग यह निर्धारित करने के लिए करें कि रिकॉर्ड किए गए ऑडियो को मूल ऑडियो के साथ कितनी बारीकी से खेला गया था। आपको लगता है कि में रुचि रखते हैं, उस पर मेरी पोस्ट की जाँच के लिए स्वतंत्र महसूस:

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

अजगर PCAP स्क्रैप करना

हो सकता है कि आप क्या कर रहे से संबंधित नहीं है, लेकिन मैं यह भी है पैकेट कैप्चर से ऑडियो पुनर्निर्माण के लिए पायशार्क लाइब्रेरी का उपयोग करने के साथ खेला ... यह अधिक जटिल और शायद अधिक नाजुक है।

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

संबंधित मुद्दे