मैं कुछ ब्राउज़र संचालन को स्वचालित करने के लिए सेलेनियम आरसी का उपयोग कर रहा हूं लेकिन मैं चाहता हूं कि ब्राउज़र अदृश्य हो। क्या यह संभव है? कैसे? सेलेनियम ग्रिड के बारे में क्या? क्या मैं सेलेनियम आरसी विंडो भी छिपा सकता हूं?
मैं कुछ ब्राउज़र संचालन को स्वचालित करने के लिए सेलेनियम आरसी का उपयोग कर रहा हूं लेकिन मैं चाहता हूं कि ब्राउज़र अदृश्य हो। क्या यह संभव है? कैसे? सेलेनियम ग्रिड के बारे में क्या? क्या मैं सेलेनियम आरसी विंडो भी छिपा सकता हूं?
जवाबों:
कुछ विकल्प हैं:
आप सेलेनियम ग्रिड का उपयोग कर सकते हैं ताकि ब्राउज़र पूरी तरह से अलग मशीन (या वर्चुअल मशीन) पर खोला जाए जिसे आप तब वीएनसी या रिमोट डेस्कटॉप कनेक्शन के माध्यम से कनेक्ट कर सकते हैं यदि आप ब्राउज़र देखना चाहते हैं। इसके अलावा, एक अन्य विकल्प: यदि आप उस रिमोट सर्वर पर जेनकींस अग्रभूमि प्रक्रिया चलाते हैं, तो यह डेस्कटॉप पर आपके परीक्षण प्रोजेक्ट को निष्पादित कर सकता है।
आप XVFB में लिनक्स पर सेलेनियम 'हेडलेस' चला सकते हैं। मैंने कभी ऐसा करने की कोशिश नहीं की और संदेह है कि यह वास्तव में प्रयास के लायक है। http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
आप सेलेनियम आरसी को विंडोज सेवा में लपेट सकते हैं। http://support.microsoft.com/kb/137890 । सिवाय इसके कि विंडोज़ के बाद के संस्करणों पर अनुमतियाँ बाधा बनती हैं, शायद सेलेनियम को विंडोज़ 2000 जैसे डेस्कटॉप तक पहुँचने से रोक देगा, जो हमें करने की अनुमति देता है।
एक अन्य विकल्प वेबड्राइवर HTMLUnitDriver जैसी किसी चीज़ का उपयोग करना होगा, जो 'वास्तविक' ब्राउज़र लॉन्च नहीं करता है। http://code.google.com/p/webdriver/ । इसके अलावा एक PhantomJS विकल्प है और साथ ही एक 'हेडलेस क्रोम' भी है जिसका आप उपयोग कर सकते हैं।
बेशक SauceLabs जैसी सेवा का उपयोग करने का विकल्प भी है, जहां आप अपने परीक्षण क्लाउड में चला सकते हैं। आपके परीक्षणों के पूरा होने के बाद आप उनका एक वीडियो चला सकते हैं।
लिनक्स पर, आप ब्राउजर को छिपाने के लिए वेबड्राइवर को हेडलेस (आभासी) डिस्प्ले में चला सकते हैं। यह Xvfb (एक्स वर्चुअल फ्रेमबफ़र) के साथ किया जा सकता है।
आप Pyvon कोड से Xvfb को सीधे नियंत्रित कर सकते हैं xvfbwrapper
:
https://github.com/cgoldberg/xvfbwrapper
बिना सिर के चलने के लिए पायथन कोड इस तरह दिखेगा:
from selenium import webdriver
from xvfbwrapper import Xvfb
display = Xvfb()
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')
print(driver.title)
driver.quit()
display.stop()
डेबियन / उबंटू पर निर्भरता स्थापित करें:
$ sudo apt-get install xvfb
$ pip install xvfbwrapper
मैं आसानी से ब्राउज़र विंडो को छिपाने में कामयाब रहा।
बस PhantomJS स्थापित करें । फिर, इस लाइन को बदलें:
driver = webdriver.Firefox()
सेवा:
driver = webdriver.PhantomJS()
आपके बाकी कोड को बदलने की आवश्यकता नहीं है और कोई भी ब्राउज़र नहीं खुलेगा। डिबगिंग उद्देश्यों के लिए, driver.save_screenshot('screen.png')
अपने कोड के विभिन्न चरणों में उपयोग करें।
driver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
सेलेनियम आरसी के लिए एक विंडोज़ सेवा के रूप में +1।
पूरी तरह से छिपे हुए परीक्षण चलाने के लिए, मुझे लगता है कि आपके पास बहुत सारे समाधान नहीं हैं यदि आप खिड़कियों पर हैं।
क्या मैं यह करने के लिए अपने लैन में एक कंप्यूटर समर्पित करने के लिए हर समय ऑनलाइन होगा और एक सेलेनियम आर सी सर्वर चल रहा है। इसलिए आप अपने परीक्षणों को चलाने के लिए लोकलहोस्ट के बजाय उस कंप्यूटर के आईपी का उपयोग करें। उदाहरण के लिए:
browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")
(यह देखते हुए कि सर्वर चलाने वाले कंप्यूटर का आईपी है)।
उस सेटअप के होने के बाद, आप कंप्यूटर में अपने परीक्षण चलाते हैं, ब्राउज़र और RC सर्वर विंडो दूसरे कंप्यूटर में हैं और एक बार आपके पास वापस चला जाता है।
लिनक्स पर, आप अपने टेस्ट ब्राउज़र को वर्चुअल डिस्प्ले पर चला सकते हैं। xvfb
वर्चुअल X सर्वर बनाने के लिए आपको पैकेज की आवश्यकता होगी । डेबियन आधारित डिस्ट्रोस पर, बस चलाएं
sudo apt-get install xvfb
एक अच्छा उपकरण है ephemeral-x.sh
जो आसानी से वर्चुअल डिस्प्ले पर चलने के लिए कोई भी कमांड सेट करेगा। इसे डाउनलोड करें और इसे निष्पादन योग्य बनाएं:
wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh
तब आप इसे सेलेनियम सर्वर शुरू करने के लिए उपयोग कर सकते हैं:
./ephemeral-x.sh java -jar selenium-standalone.jar
सेलेनियम द्वारा बनाई गई सभी ब्राउज़र विंडो अब वर्चुअल डिस्प्ले का उपयोग करेंगी और आपके लिए अदृश्य होंगी।
यदि आप विंडोज पर हैं, तो एक विकल्प एक अलग उपयोगकर्ता खाते के तहत परीक्षण चलाने के लिए है । इसका अर्थ है कि ब्राउज़र और जावा सर्वर आपके स्वयं के खाते में दिखाई नहीं देंगे।
इस तरह से मैं एक लिनक्स डेस्कटॉप (उबंटू) पर मावेन के साथ अपने परीक्षण चला रहा हूं। मैं तंग आ गया कि हमेशा ध्यान केंद्रित करते हुए फ़ायरफ़ॉक्स वेबड्राइवर के साथ काम नहीं कर पा रहा हूं।
मैंने xvfb स्थापित किया
xvfb-run -a mvan क्लीन इनस्टॉल
बस
कई मामलों में फैंटमोज आपकी आवश्यकताओं के लिए पूरी तरह से उपयुक्त नहीं होंगे, मैं डेव हंट के उत्तर में उल्लिखित हेडलेस क्रोम विकल्प पर विस्तार से बताना चाहूंगा।
क्रोम 57 ने अभी यह फीचर लॉन्च किया है। ChromeDriver के माध्यम से - शीर्ष रहित ध्वज को पास करके आप इसका उपयोग कर सकते हैं, अधिक जानकारी के लिए इस प्रश्न में चर्चा देखें
एक भूत प्रेत संबंधित परियोजना है जिसे घोस्टड्राइवर कहा जाता है , जो कि वेबड्राइवर वायर जेएसएन प्रोटोकॉल का उपयोग करके सेलेनियम ग्रिड में फैंटमजस इंस्टेंसेस को चलाने के लिए है। शायद यही है कि आप क्या देख रहे हैं, हालांकि यह सवाल अभी 4 साल पुराना है।
MacOSX पर, मैं ब्राउज़र विंडो को छिपाने में सक्षम नहीं हूं, लेकिन कम से कम मुझे लगा कि इसे एक अलग प्रदर्शन में कैसे स्थानांतरित किया जाए ताकि यह मेरे वर्कफ़्लो को इतना बाधित न करे। जबकि फ़ायरफ़ॉक्स परीक्षण चल रहा है, बस डॉक में इसके आइकन पर नियंत्रण-क्लिक करें, विकल्प चुनें, और प्रदर्शन 2 पर असाइन करें।
curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand
वैसे यह e2e चलाने वाले किसी भी डेवलपर के लिए आवश्यक विशेषता है जो तार्किक रूप से ब्राउज़रों को स्पॉन करेगा। एक विकास के माहौल में यह उस खिड़की से निपटने के लिए कष्टप्रद है जो पॉप अप करता रहता है और जिसे आप गलती से परीक्षण को विफल बना सकते हैं।
हेडलेस क्रोम का उपयोग करना आपका सबसे अच्छा दांव होगा, या आप इसके साथ बातचीत करने के लिए सीधे साइट पर पोस्ट कर सकते हैं, जो अन्य चीजों / प्रक्रियाओं के लिए बहुत सारी गणना शक्ति को बचाएगा। मैं इसका उपयोग वेब स्वचालन बॉट्स का परीक्षण करते समय करता हूं जो सीपीयू भारी तत्वों का उपयोग करते हुए कई साइटों पर जूते की खोज करते हैं, जितनी अधिक बिजली आप बचाते हैं, और आपका कार्यक्रम जितना सरल होगा, एक समय में कई प्रक्रियाओं को चलाने के लिए यह उतना ही अधिक गति से muhc है। विश्वसनीयता।