2011-01-14 10 views
7

हमारी साइट $ (दस्तावेज़) में पहले से ही जावास्क्रिप्ट/jQuery काम करता है .ready() फ़ंक्शन, बटन सेट अप करना, AJAX के माध्यम से सामग्री लोड करना आदि। सेलेनियम डॉम लोड होने तक प्रतीक्षा करता है, लेकिन फिर पहले परीक्षण करने के लिए आगे बढ़ता है। तैयार() पूरा हो गया है। सुनिश्चित नहीं है कि हम अभी भी बटन और बातों के लिए बाइंडिंग की स्थापना नहीं कर रहे हैं

selenium.browserbot.getCurrentWindow().jQuery.active == 0 

हालांकि:

एक आंशिक समाधान एक जांच का उपयोग करने की ब्राउज़र ajax अनुरोध लंबित है, तो देखने के लिए लगता है।

कोई मदद बहुत की सराहना की जाएगी। वर्तमान 'सर्वश्रेष्ठ' सुझाव .ready() विधि के अंत में पृष्ठ पर एक तत्व जोड़ रहा है, जो सेलेनियम काम शुरू करने के लिए सिग्नल के रूप में पकड़ सकता है, लेकिन परीक्षण उद्देश्यों के लिए इस तरह के कोड जोड़ने का विचार सबसे अच्छा लगता है ।

उत्तर

3

मेरा मानना ​​है कि आप विंडो लोड चेक का उपयोग कर सकते हैं। इस प्रयास करें:

$(window).load(function(){ 
    selenium.browserbot.getCurrentWindow().jQuery.active == 0 
}); 
1

वर्तमान 'सर्वश्रेष्ठ' सुझाव विधि .ready() की अंत है, जो सेलेनियम काम कर शुरू करने के लिए एक संकेत के रूप में पकड़ कर सकते हैं पर पृष्ठ पर कोई तत्व जोड़ है , लेकिन परीक्षण उद्देश्यों के लिए कोड जोड़ने का विचार सबसे अच्छा स्केची लगता है।

मुझे व्यक्तिगत रूप से नहीं लगता कि टेस्टेबिलिटी में सुधार के लिए आपके कोड को संशोधित करना एक बुरी बात है। यदि आप वास्तव में अपने उत्पादन पृष्ठों को प्रदूषित नहीं करेंगे तो कुछ टेम्पलेटिंग टूल का उपयोग PHP जैसे ही विकास/डीबग मोड में कोड आउटपुट करने के लिए करें।

इसके अलावा, आपको इसके लिए DOM का उपयोग करने की आवश्यकता नहीं है। सेलेनियम के पास पृष्ठ में पूर्ण जावास्क्रिप्ट संदर्भ तक पहुंच है ताकि आप ध्वज के रूप में वैश्विक वैरिएबल का उपयोग कर सकें। हो सकता है कि SELENIUM_PAGE_FULLY_READY जैसे अन्य लोगों द्वारा उपयोग की जाने वाली संभावना हो तो उसके अस्तित्व के लिए सेलेनियम जांच करें।