2012-12-20 13 views
5

सेलेनियम के मुताबिक, एक निश्चित प्रतीक्षा डीओएम को एक निश्चित समय के लिए चुनाव करती है कि कोई तत्व दिखाई देता है या नहीं। मेरी समझ यह है कि यह एक निर्दिष्ट समय तक मतदान करेगा, लेकिन यदि कोई तत्व पहले दिखाई देता है, तो यह आगे इंतजार किए बिना जारी रहेगा।सेलेनियम निहित प्रतीक्षा बनाम थ्रेड.sleep()

http://seleniumhq.org/docs/04_webdriver_advanced.html

मैं एक विधि है कि के बारे में 13 सेकंड में चलाता है। जब मैं 100 सेकंड तक अंतर्निहित प्रतीक्षा सेट करता हूं, तो इसमें 213 सेकंड लगते हैं।

driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 

ऐसा प्रतीत होता है कि इस विधि के दौरान, मैं 2 बार (100 सेकंड प्रत्येक) प्रतीक्षा कर रहा हूं। अंतर्निहित प्रतीक्षा 0 या 100 पर सेट करना मेरी विधि को प्रभावित नहीं करता है। दोनों मामलों में, वे सही ढंग से खत्म करते हैं।

मेरा प्रश्न यह है। मैंने सोचा कि निहित प्रतीक्षा एक तत्व के लिए दिखाने के लिए सबसे कम समय के लिए इंतजार कर रहा है। क्या यह सही है? या मुझ से कुछ गलत हो रहा है?

इसके अलावा, यह 2 बार क्यों इंतजार कर रहा है, जब इसे स्पष्ट रूप से प्रतीक्षा करने की आवश्यकता नहीं है? (मेरे विधि सही ढंग से खत्म भले ही मैं 0 करने के लिए इंतजार सेट)

+0

[सेलेनियम वेबड्राइवर - स्पष्ट प्रतीक्षा बनाम निहित प्रतीक्षा] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/10404160/selenium-webdriver-explicit-wait-vs-implicit-wait) – lesmana

उत्तर

4

लघु जवाब:

निहित इंतजार - यह वैश्विक सेटिंग सभी तत्वों के लिए और अगर तत्व लागू करने से पहले निर्दिष्ट दिखाई स्क्रिप्ट से समय को क्रियान्वित करने शुरू कर देंगे अन्यथा स्क्रिप्ट होगा है NoSuchElementException फेंक दें। सेटअप विधि में उपयोग करने का सबसे अच्छा तरीका। केवल By.findelement() को प्रभावित करें।

Thread.sleep() - यह स्क्रिप्ट के लिए समय सोएगा, स्क्रिप्ट में उपयोग करने का अच्छा तरीका नहीं है क्योंकि यह बिना शर्त के सो रहा है।

+0

क्या होगा अगर ड्राइवर दूसरे को मिला यूआरएल, निहित इंतजार अभी भी प्रभावी है? या मुझे इसे फिर से याद करने की ज़रूरत है? – 8090PZ

+0

एम, यूआरएल की परवाह किए बिना रन की अवधि के लिए प्रभावी है। ध्यान दें कि खोजने के लिए आकार() == 0. की अपेक्षा करना संभव है लेकिन सेलेनियम अंतिम निर्दिष्ट समय का इंतजार करेगा। यदि पृष्ठ परीक्षण के समय लोड हो जाता है, तो निष्कर्ष निकालने से पहले निहित प्रतीक्षा समय (उदा। 1 सेकंड) को कम करना और उसके बाद सामान्य पर वापस रीसेट करना तेजी से निष्पादन समय का कारण बन जाएगा। –

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