2012-06-22 21 views
6

जब मैं सेलेनियम आरसी का उपयोग करता हूं, वहां एक विधि सेट है:क्या ब्राउजर की गति को नियंत्रित करने के लिए जावा के साथ वेबड्राइवर में कोई तरीका है?

सेलेनियम.सेटस्पेड ("500");

सेलेनियम वेबड्राइवर में ब्राउज़र की गति को नियंत्रित करने का तरीका क्या है?

+1

आप [अंतर्निहित प्रतीक्षा] पता है (http://seleniumhq.org/docs/04_webdriver_advanced.html)? आप WebDriverBackedSelenium और setSpeet (अनुशंसित नहीं) का उपयोग भी कर सकते हैं –

उत्तर

3

आप वेबड्राइवर चलाने के लिए उपयोग की जा रही किसी भी भाषा में Thread.Sleep(500) (या समतुल्य) का उपयोग कर सकते हैं। यह थ्रेड को मिलीसेकंड की सटीक संख्या के लिए रोक देगा।

वैकल्पिक रूप से आप वर्णित hereस्पष्ट या निहित प्रतीक्षा करता है का उपयोग कर सकते हैं।

  • स्पष्ट प्रतीक्षा करता है कि आप एक ExpectedCondition परिभाषित करने के लिए अनुमति देते हैं। वेबड्राइवर प्रत्येक 500 मिलीसेकंड की स्थिति को तब तक जांच करेगा जब तक कि यह सत्य न हो जाए, (जिसके बाद निष्पादन तत्काल फिर से शुरू हो जाएगा)।

  • लागू प्रतीक्षा करता है वेबड्राइवर को डोम में कुछ ढूंढने का प्रयास करने के लिए पुनः प्रयास करने का कारण बनता है। तत्व मिलने के तुरंत बाद निष्पादन फिर से शुरू हो जाएगा।

ध्यान दें कि न तो निहित और न ही स्पष्ट प्रतीक्षा 500 मिलीसेकंद विराम की गारंटी देगी।

11

सेलेनियम वेबड्राइवर में प्रत्येक "चरण" की गति को नियंत्रित करने का कोई तरीका नहीं है। एक समय में, इंटरफ़ेस पर setSpeed() विधि थी (जावा बाइंडिंग में; अन्य बाइंडिंगों के पास उनके उचित नाम वाली वस्तुओं पर समान संरचनाएं थीं), लेकिन इसे बहुत लंबे समय से बहिष्कृत कर दिया गया था। इसके पीछे सिद्धांत यह है कि आपको को प्राथमिकता की आवश्यकता नहीं है, जो आपके वेबड्राइवर कोड के प्रत्येक चरण को धीमा कर दे। यदि आपको उस एप्लिकेशन में कुछ होने की प्रतीक्षा करनी है, जिसे आप स्वचालित कर रहे हैं, तो आपको एक निहित या स्पष्ट प्रतीक्षा दिनचर्या का उपयोग करना चाहिए।

+0

सेलेनियम वेबड्राइवर में अंतर्निहित और स्पष्ट प्रतीक्षा के लिए जावा कोड क्या है? –

+4

मुझे लगता है कि 'सेटस्पेड' के लिए सबसे आम आवश्यकता _developing_ स्वचालित परीक्षणों में है। मैं एक ऐसी स्थिति में दौड़ रहा हूं जहां 2 परीक्षण पास हो जाएं, लेकिन अगर मैं उन्हें सूट के रूप में चलाता हूं, तो दूसरा परीक्षण विफल हो जाता है। मैं क्या चल रहा है डीबग करने की कोशिश कर रहा हूं, लेकिन स्क्रीन इतनी तेज़ी से आगे बढ़ती है कि मैं नहीं देख सकता कि वास्तव में क्या हो रहा है। – Snekse

+0

आईडीई (स्थिर भाषाओं के लिए) या आरईपीएल (गतिशील भाषाओं के लिए) में ब्रेकपॉइंट्स क्या हैं। – JimEvans

0

अपेक्षित कैंडिशन के साथ वेबड्राइवर फ्लुएंटवाइट क्लास का उपयोग करने के लिए भी बेहतर हो सकता है। नमूना यहां पाया जा सकता है: http://www.summa-tech.com/blog/2011/10/10/using-page-objects-with-selenium-and-web-driver-20/

+0

हां, यह FluentWait का एक अच्छा उदाहरण है –

4

कोई सीधा आगे नहीं है। लेकिन एक हैक जिसका आप उपयोग कर सकते हैं, आप वेबड्राइवर के तरीकों को ओवरराइड कर सकते हैं और अपने परीक्षणों को धीमा करने के लिए एक स्पष्ट नींद पेश कर सकते हैं। अधिभावी findElement विधि

public class _WebDriver extends FirefoxDriver { 

@Override 
public WebElement findElement(By by) { 
    try { 
     Thread.sleep(500); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return by.findElement((SearchContext) this); 
} 

}