क्या सेलेनियम आरसी में ब्राउज़र को छिपाना संभव है?


92

मैं कुछ ब्राउज़र संचालन को स्वचालित करने के लिए सेलेनियम आरसी का उपयोग कर रहा हूं लेकिन मैं चाहता हूं कि ब्राउज़र अदृश्य हो। क्या यह संभव है? कैसे? सेलेनियम ग्रिड के बारे में क्या? क्या मैं सेलेनियम आरसी विंडो भी छिपा सकता हूं?


स्वीकार्य नहीं हो सकता है, लेकिन जैसे आप स्क्रीन को बंद कर सकते हैं (नियमित विंडो UI स्वचालन का उपयोग करके ब्राउज़र को स्थानांतरित नहीं कर सकते?) -10000 (-10000) में विंडो को रखें?
BrainSlugs83

2
चूँकि यह प्रश्न अब पुराना है, इसलिए मुझे इस पृष्ठ के निचले भाग में एक उचित अप-टू-डेट उत्तर की ओर पुनः निर्देशित करें
स्टीफन ब्रुकर्ट

जवाबों:


87

कुछ विकल्प हैं:

  • आप सेलेनियम ग्रिड का उपयोग कर सकते हैं ताकि ब्राउज़र पूरी तरह से अलग मशीन (या वर्चुअल मशीन) पर खोला जाए जिसे आप तब वीएनसी या रिमोट डेस्कटॉप कनेक्शन के माध्यम से कनेक्ट कर सकते हैं यदि आप ब्राउज़र देखना चाहते हैं। इसके अलावा, एक अन्य विकल्प: यदि आप उस रिमोट सर्वर पर जेनकींस अग्रभूमि प्रक्रिया चलाते हैं, तो यह डेस्कटॉप पर आपके परीक्षण प्रोजेक्ट को निष्पादित कर सकता है।

  • आप 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 जैसी सेवा का उपयोग करने का विकल्प भी है, जहां आप अपने परीक्षण क्लाउड में चला सकते हैं। आपके परीक्षणों के पूरा होने के बाद आप उनका एक वीडियो चला सकते हैं।


सेवा को स्थापित करने के लिए एक बैट फ़ाइल बनाने के निर्देश यहां दिए गए हैं: brantleytec.blogspot.com/2012/11/…
Brantley Blanchard

58

लिनक्स पर, आप ब्राउजर को छिपाने के लिए वेबड्राइवर को हेडलेस (आभासी) डिस्प्ले में चला सकते हैं। यह 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

जब कोड एक आभासी ब्राउज़र में चलता है तो क्या मैं अपने पीसी का उपयोग सामान्य रूप से जारी रख सकता हूं जबकि ब्राउज़र इंटरैक्शन स्क्रिप्ट चलती है?
मगें

संसाधनों को लिया जाता है, आपकी मशीन धीमी हो जाएगी!
टिम लॉन्ग

22

मैं आसानी से ब्राउज़र विंडो को छिपाने में कामयाब रहा।

बस PhantomJS स्थापित करें । फिर, इस लाइन को बदलें:

driver = webdriver.Firefox()

सेवा:

driver = webdriver.PhantomJS()

आपके बाकी कोड को बदलने की आवश्यकता नहीं है और कोई भी ब्राउज़र नहीं खुलेगा। डिबगिंग उद्देश्यों के लिए, driver.save_screenshot('screen.png')अपने कोड के विभिन्न चरणों में उपयोग करें।


5
यह ध्यान देने योग्य है कि आपको इस कार्य के लिए PhantomJs.exe का मार्ग अपनाना होगा। उदाहरणdriver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
के दाऊ

1
हां, लेकिन केवल विंडोज पर।
स्टीफन ब्रुकर्ट

1
आपको बाइनरी के स्थान को निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि यह आपके पर्यावरण के $ PATH पर्यावरण चर से पाया जा सकता है।
कोरी गोल्डबर्ग 3

13

सेलेनियम आरसी के लिए एक विंडोज़ सेवा के रूप में +1।

पूरी तरह से छिपे हुए परीक्षण चलाने के लिए, मुझे लगता है कि आपके पास बहुत सारे समाधान नहीं हैं यदि आप खिड़कियों पर हैं।

क्या मैं यह करने के लिए अपने लैन में एक कंप्यूटर समर्पित करने के लिए हर समय ऑनलाइन होगा और एक सेलेनियम आर सी सर्वर चल रहा है। इसलिए आप अपने परीक्षणों को चलाने के लिए लोकलहोस्ट के बजाय उस कंप्यूटर के आईपी का उपयोग करें। उदाहरण के लिए:

browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(यह देखते हुए कि सर्वर चलाने वाले कंप्यूटर का आईपी है)।

उस सेटअप के होने के बाद, आप कंप्यूटर में अपने परीक्षण चलाते हैं, ब्राउज़र और RC सर्वर विंडो दूसरे कंप्यूटर में हैं और एक बार आपके पास वापस चला जाता है।


12

लिनक्स पर, आप अपने टेस्ट ब्राउज़र को वर्चुअल डिस्प्ले पर चला सकते हैं। 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

सेलेनियम द्वारा बनाई गई सभी ब्राउज़र विंडो अब वर्चुअल डिस्प्ले का उपयोग करेंगी और आपके लिए अदृश्य होंगी।


इस स्क्रिप्ट में एक उद्धरण मुद्दा है। अगर मैं कहूं तो ./ephemeral-x.sh foo '*' यह कहता है "रनिंग: फू" और उसके बाद मेरी निर्देशिका की सामग्री।
निक रिटलैक

4

यदि आप विंडोज पर हैं, तो एक विकल्प एक अलग उपयोगकर्ता खाते के तहत परीक्षण चलाने के लिए है । इसका अर्थ है कि ब्राउज़र और जावा सर्वर आपके स्वयं के खाते में दिखाई नहीं देंगे।


3

इस तरह से मैं एक लिनक्स डेस्कटॉप (उबंटू) पर मावेन के साथ अपने परीक्षण चला रहा हूं। मैं तंग आ गया कि हमेशा ध्यान केंद्रित करते हुए फ़ायरफ़ॉक्स वेबड्राइवर के साथ काम नहीं कर पा रहा हूं।

मैंने xvfb स्थापित किया

xvfb-run -a mvan क्लीन इनस्टॉल

बस


यह अक्सर यह सुनिश्चित करने का सबसे आसान तरीका है कि xvfb सेलेनियम / वेबड्राइवर द्वारा चलाया और उपयोग किया जाता है।
समुली पहाजा

1

कई मामलों में फैंटमोज आपकी आवश्यकताओं के लिए पूरी तरह से उपयुक्त नहीं होंगे, मैं डेव हंट के उत्तर में उल्लिखित हेडलेस क्रोम विकल्प पर विस्तार से बताना चाहूंगा।

क्रोम 57 ने अभी यह फीचर लॉन्च किया है। ChromeDriver के माध्यम से - शीर्ष रहित ध्वज को पास करके आप इसका उपयोग कर सकते हैं, अधिक जानकारी के लिए इस प्रश्न में चर्चा देखें


0

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


0

MacOSX पर, मैं ब्राउज़र विंडो को छिपाने में सक्षम नहीं हूं, लेकिन कम से कम मुझे लगा कि इसे एक अलग प्रदर्शन में कैसे स्थानांतरित किया जाए ताकि यह मेरे वर्कफ़्लो को इतना बाधित न करे। जबकि फ़ायरफ़ॉक्स परीक्षण चल रहा है, बस डॉक में इसके आइकन पर नियंत्रण-क्लिक करें, विकल्प चुनें, और प्रदर्शन 2 पर असाइन करें।


0
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 चलाने वाले किसी भी डेवलपर के लिए आवश्यक विशेषता है जो तार्किक रूप से ब्राउज़रों को स्पॉन करेगा। एक विकास के माहौल में यह उस खिड़की से निपटने के लिए कष्टप्रद है जो पॉप अप करता रहता है और जिसे आप गलती से परीक्षण को विफल बना सकते हैं।


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.