2013-03-30 5 views
7

के साथ कैसे कॉल करें मेरे कार्यात्मक परीक्षण चलाने के लिए मैं LiveServerTestCase का उपयोग करता हूं।पायथन डीजेंगो: sjenium.set_speed() को django LiveServerTestCase

मैं set_speed (और अन्य विधियों, set_speed केवल एक उदाहरण है) को कॉल करना चाहता हूं जो वेबड्राइवर में नहीं हैं, लेकिन सेलेनियम ऑब्जेक्ट में हैं।

http://selenium.googlecode.com/git/docs/api/py/selenium/selenium.selenium.html#module-selenium.selenium

LiveServerTestCase

from selenium import webdriver 

class SeleniumLiveServerTestCase(LiveServerTestCase): 

    @classmethod 
    def setUpClass(cls): 

     cls.driver = webdriver.Firefox() 
     cls.driver.implicitly_wait(7) 

     cls.driver.maximize_window() 

     # how to call selenium.selenium.set_speed() from here? how to get the ref to the selenium object? 

     super(SeleniumLiveServerTestCase, cls).setUpClass() 

की मेरी उपवर्ग कैसे प्राप्त करें? मैं सेलेनियम पर कन्स्ट्रक्टर को कॉल नहीं कर सकता, मुझे लगता है।

+2

जांच [यह] (http: //stackoverflow.c ओम/प्रश्न/9910 9 00/कार्यान्वयन-वेबड्राइवरबैकडेनियम-इन-पायथन) लिंक। सेटस्पेड विधि का उपयोग करने के लिए आपको वेबड्राइवर समर्थित सेलेनियम का उपयोग करने की आवश्यकता हो सकती है। – Hemanth

उत्तर

7

आप नहीं करते हैं। वेबड्राइवर में गति निर्धारित करना संभव नहीं है और इसका कारण यह है कि आपको आम तौर पर इसकी आवश्यकता नहीं होनी चाहिए, और 'प्रतीक्षा' अब एक अलग स्तर पर किया जाता है।

सेलेनियम को बताना संभव था, इसे सामान्य गति से नहीं चलाएं, धीमी गति से लोड करने वाले पृष्ठों या AJAX'ified पृष्ठों के लिए पेज लोड पर अधिक चीजें उपलब्ध होने की अनुमति देने के लिए इसे धीमी गति से चलाएं।

अब, आप पूरी तरह से उस से दूर हो जाते हैं। उदाहरण:

मेरे पास लॉगिन पृष्ठ है, मैं लॉगिन करता हूं और एक बार लॉग इन करता हूं, मुझे "वेलकम" संदेश दिखाई देता है। समस्या यह है कि वेलकम संदेश तुरंत प्रदर्शित नहीं होता है और समय विलंब (jQuery का उपयोग करके) पर होता है।

पूर्व WebDriver कोड, सेलेनियम को हुक्म इस परीक्षण चलाते हैं, लेकिन धीमा यहाँ तो हम जब तक आपका स्वागत संदेश प्रकट होता है इंतजार कर सकते हैं होगा।

नई WebDriver कोड, सेलेनियम को हुक्म होगा इस परीक्षण चलाने के लिए, लेकिन जब हम के लिए लॉग इन, अब explicit waits.

का उपयोग कर प्रदर्शित होने के लिए आपका स्वागत संदेश के लिए 20 सेकंड तक प्रतीक्षा करें, आप वास्तव में करने के लिए उपयोग करना चाहते हैं " सेट "सेलेनियम की गति, सबसे पहले मैं इसके खिलाफ अनुशंसा करता हूं लेकिन समाधान पुराने, अब बहिष्कृत कोड में गोता लगाने के लिए होगा।

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

https://groups.google.com/forum/#!topic/selenium-users/6E53jIIT0TE

दूसरा विकल्प है, यह आपके मौजूदा कोड का एक बहुत कुछ बदल जाएगा (क्योंकि है यह पहले "WebDriver" की अवधारणा का जन्म हुआ) वर्ष सेलेनियम कोड में गोता लगाने और इसका इस्तेमाल करने के लिए है।

दोनों सेलेनियम आर सी & WebDriverBackedSelenium के लिए कोड यहाँ रहता है, उत्सुक के लिए:

https://code.google.com/p/selenium/source/browse/py/selenium/selenium.py

की तर्ज पर कुछ:

from selenium import webdriver 
from selenium import selenium 
driver = webdriver.Firefox() 
sel = selenium('localhost', 4444, '*webdriver', 'http://www.google.com') 
sel.start(driver = driver) 

फिर आप पहुँच यह करने के लिए मिल चाहते हैं :

sel.setSpeed(5000) 
+0

asap मैं बैकएंडेलिनियम विकल्पों का प्रयास करूंगा। imho यह अविश्वसनीय है कि नए वेबड्राइवर कोड – apelliciari

+0

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

+0

एकमात्र कारण है कि मैं गति को कम करना चाहता हूं, परीक्षण विफल होने पर प्रक्रिया की जांच कर रहा है। अगर मैं परीक्षण धीमा करता हूं, तो शायद मैं देख सकता हूं कि क्या होता है – apelliciari

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