2011-08-18 12 views
5

मैं सेजेनियम का उपयोग एक वेब ऐप का परीक्षण करने के लिए कर रहा हूं जो डोजो का उपयोग करता है, और यह कुछ तत्वों को प्रदर्शित करने के लिए जावा स्क्रिप्ट का उपयोग करता है। मैं तब तक इंतजार करना चाहता हूं जब तक कि मैं पृष्ठ में हेरफेर करने की कोशिश करने से पहले सभी तत्वों को निराश नहीं किया जाता, हालांकि मुझे परेशानी हो रही है।सक्रिय जावास्क्रिप्ट टाइमआउट कैसे गिनें?

मैंने डोजो इनफ्लैट वैरिएबल 0 होने की प्रतीक्षा करके शुरू किया है, यह कहता है कि सभी AJAX समाप्त हो गया है। यह हमेशा काम नहीं करता है क्योंकि ऐसा लगता है कि बाद में एक समय पर कुछ चीजें होती हैं।

मैंने बार-बार तत्व की तलाश करने की भी कोशिश की है, लेकिन यह बहुत अच्छा नहीं है, क्योंकि शायद कुछ जावास्क्रिप्ट बाद में इस क्षेत्र का उपयोग किसी भी तरह से करेगा।

तो मूल रूप से मैं सेटटाइमआउट (या सेट इंटरवल) पर चलाने के लिए प्रतीक्षा कर रहे जावास्क्रिप्ट से पूछताछ करने के लिए एक विधि (कम से कम फ़ायरफ़ॉक्स में) चाहता हूं, मैं अपने स्वयं के एक समारोह के माध्यम से निर्मित कॉल को लपेटने का एक तरीका भी सामना कर सकता हूं इसका ट्रैक रखने के लिए।

किसी भी विचार या सुझाव की सराहना की!

उत्तर

5

जावास्क्रिप्ट में प्रत्येक फ़ंक्शन को प्रतिस्थापित किया जा सकता है।

window.originalSetTimeout = window.setTimeout; 

window.setTimeout = function(func, delay, params) { 
    window.timeoutCounter++; 
    window.originalSetTimeout(window.timeoutCallback, delay, [func, params]); 
} 

window.timeoutCallback = function(funcAndParams) { 
    window.timeoutCounter--; 
    func = funcAndParams[0]; 
    params = funcAndParams[1]; 
    func(params); 
} 

तो: आपके उत्तर के लिए

selenium.waitForCondition("window.timeoutCounter == 0"); 
1

जब भी आप पर कॉल करते हैं - एक टाइमर आईडी वापस आती है।

    एक सरणी
  1. समारोह है कि आप समय समाप्ति पर कॉल कर रहे हैं अंदर में है कि टाइमर आईडी, पॉप कि टाइमर आईडी बंद सरणी सहेजें
  2. । क्योंकि टाइमर समाप्त होने के तुरंत बाद हमें उस आईडी को सरणी से हटाना होगा।
  3. जब भी आप नंबर की जांच करना चाहते हैं। सक्रिय टाइमर के, बस उस सरणी की लंबाई पूछें।
+0

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

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