2009-08-23 16 views
8

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

  • मैं यह सुनिश्चित कैसे कर सकता हूं कि उन ब्राउज़र बंद हैं?
  • प्रोटोकॉल में "रख-रखाव" भाग क्यों नहीं है यह सुनिश्चित करने के लिए कि ग्राहक अभी भी उत्तरदायी है और सत्र को मार नहीं सकता है?
  • +0

    आपको लगता है कि आपके प्रश्न का उत्तर देने के बाद आपको एक जवाब स्वीकार करना होगा ... – Santi

    +0

    इसी तरह के नोट पर, क्या मैं मौजूदा ब्राउज़र सत्रों का पुन: उपयोग कर सकता हूं? :) – Nayn

    +0

    @Nayn - हाँ आप कर सकते हैं! :) एक तर्क है कि जब आप इसे शुरू करते हैं तो सेलेनियम आरसी भेज सकते हैं: -ब्रोसेसर सत्र रीयस – olamundo

    उत्तर

    14

    किसी भी ब्राउज़र इंस्टेंस में एक session_id है जिसे आप स्टोर कर सकते हैं। अजगर उदाहरण:

    >>> import selenium 
    >>> browser = selenium.selenium("localhost",4444, "*firefox", "http://www.santiycr.com.ar") 
    >>> browser.start() 
    >>> browser.sessionId 
    u'b4ad1f1d624e44d9af4200b26d7375cc' 
    

    इसलिए, यदि आप एक फ़ाइल में इन sessionId स्टोर जब अपने परीक्षण शुरू होता है और फिर इसे हटाने जब अपने परीक्षण समाप्त हो जाती है, तो आप परीक्षण है कि खत्म नहीं हुई के लिए सत्र के साथ एक लॉग फ़ाइल होगा अच्छी तरह।

    अब क्रॉन का उपयोग कर, या किसी भी नियमित रूप से निष्पादन, तो आप उस फ़ाइल को पढ़ने, यह में संग्रहीत SessionIDs से अधिक पुनरावृति और खोलने के लिए इस यूआरएल कर सकते हैं (एक ब्राउज़र या यहाँ तक कि अपने कार्यक्रमों की भाषा के लिए एक http लाइब्रेरी का उपयोग कर):

    http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete

    यह चाल चलाना चाहिए।

    संपादित करें: मुझे यह प्रश्न इतना दिलचस्प पाया गया कि समाधान के बारे में मेरे ब्लॉग में एक पोस्ट बनाया गया। यदि आप एक अजगर पुरुष हैं, तो आप इसे दिलचस्प मिल जाएगा: http://www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc

    +0

    अच्छा उदाहरण संती – AutomatedTester

    +0

    फ़ायरफ़ॉक्स ब्राउज़र के लिए, आप प्रोफाइल फ़ोल्डर नाम की जांच करके सत्रदर्शी को ढूंढ सकते हैं। एक यूनिक्स सिस्टम पर, 'पीएस कुल्हाड़ी | grep फ़ायरफ़ॉक्स-बिन '12345 की तरह कुछ वापस कर देगा? 1:00/usr/lib/iceweasel/फ़ायरफ़ॉक्स-बिन-प्रोफाइल/tmp/customProfileDir '। – Tgr

    2

    आप, साथ ही प्रक्रिया को मार सकता है:

    विंडोज:

    taskkill /f /im iexplore.exe
    taskkill /f /im firefox.exe

    * nix:

    for i in `ps -A | grep firefox | awk '{print $1}'`; do kill -9 $i; done 
    
    +0

    यह सभी फ़ायरफ़ॉक्स को मार देगा, सिर्फ "ज़ोंबी" नहीं। इसलिए, उदाहरण के लिए, आप एक ही मशीन पर दो आरसी चलाते हैं (असंभव नहीं), तो आप अन्य आरसी द्वारा उपयोग किए जाने वाले एफएफ को खत्म कर सकते हैं। – olamundo

    2
    >>> browser.stop() 
    

    क्या सांती जैसा ही ऊपर बताता है।

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