पाइथन का उपयोग करने वाले सेलेनियम - पीएसीएच में जेकोड्राइवर निष्पादन योग्य होने की आवश्यकता है


435

मैं प्रोग्रामिंग के लिए नया हूं और Pythonलगभग 2 महीने पहले शुरू किया गया था और पायथन पाठ के साथ स्विगार्ट के स्वचालित बोरिंग स्टफ पर जा रहा हूं । मैं IDLE का उपयोग कर रहा हूं और पहले से सेलेनियम मॉड्यूल और फ़ायरफ़ॉक्स ब्राउज़र स्थापित कर रहा हूं। जब भी मैंने वेबड्राइवर फ़ंक्शन को चलाने की कोशिश की, मुझे यह मिल गया:

from selenium import webdriver
browser = webdriver.Firefox()

अपवाद: -

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0E08128>>
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
    self.stop()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
    if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
Traceback (most recent call last):
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start
    stdout=self.log_file, stderr=self.log_file)
  File "C:\Python\Python35\lib\subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "C:\Python\Python35\lib\subprocess.py", line 1224, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    browser = webdriver.Firefox()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in __init__
    self.service.start()
  File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

मुझे लगता है कि मुझे इसके लिए रास्ता तय करने की जरूरत है geckodriverलेकिन यह सुनिश्चित नहीं है कि, तो क्या कोई मुझे बता सकता है कि मैं यह कैसे करूंगा?


2
कृपया, समान प्रश्न पर मेरा उत्तर देखने के लिए यहाँ
एंड्रयू

मैं Python / Python35 निर्देशिका में geckodriver.exe लगा रहा हूं, इसलिए इसका एक ही रास्ता है और मुझे और भी अधिक समस्याएं हो रही हैं।
tadm123

80
मैक पर:brew install geckodriver
Nostalg.io

1
मैंने पाया कि क्रोम ब्राउज़र के माध्यम से इसे चलाना फ़ायरफ़ॉक्स की तुलना में थोड़ा तेज़ है, आपको इसके लिए बस डाउनलोड करना chromedriverहोगा।
tadm123

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

जवाबों:


355

selenium.common.exception.WebDriverException: संदेश: 'geckodriver' निष्पादन योग्य को PATH में होना चाहिए।

सबसे पहले आपको सेलेनियम का उपयोग करके नवीनतम फ़ायरफ़ॉक्स चलाने के लिए यहां से नवीनतम निष्पादन योग्य जेकोड्राइवर डाउनलोड करना होगा

वास्तव में सेलेनियम क्लाइंट बाइंडिंग geckodriverसिस्टम से निष्पादन योग्य का पता लगाने की कोशिश करता है PATH। आपको निर्देशिका को सिस्टम पथ के निष्पादन योग्य युक्त जोड़ना होगा।

  • यूनिक्स प्रणालियों पर आप इसे अपने सिस्टम के खोज पथ में जोड़ने के लिए निम्न कार्य कर सकते हैं, यदि आप एक बैश-संगत शेल का उपयोग कर रहे हैं:

    export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step
  • विंडोज पर आपको निष्पादन योग्य जेकोड्रीवर में पूर्ण निर्देशिका पथ को जोड़ने के लिए पथ सिस्टम चर को अपडेट करना होगा मैन्युअल रूप से या कमांड लाइन (प्रभावी होने के लिए सिस्टम पाथ में निष्पादन योग्य जेकोड्राइवर को जोड़ने के बाद अपने सिस्टम को पुनरारंभ करना न भूलें) । सिद्धांत यूनिक्स पर समान है।

अब आप अपना कोड वही चला सकते हैं जैसा आप नीचे कर रहे हैं: -

from selenium import webdriver

browser = webdriver.Firefox()

selenium।

अपवाद स्पष्ट रूप से बताता है कि आपने फ़ायरफ़ॉक्स को किसी अन्य स्थान पर स्थापित किया है, जबकि सेलेनियम फ़ायरफ़ॉक्स को खोजने और डिफ़ॉल्ट स्थान से लॉन्च करने का प्रयास कर रहा है, लेकिन यह नहीं मिल सका। आपको निम्न के रूप में फ़ायरफ़ॉक्स लॉन्च करने के लिए स्पष्ट रूप से फ़ायरफ़ॉक्स स्थापित बाइनरी स्थान प्रदान करने की आवश्यकता है: -

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/installed firefox binary')
browser = webdriver.Firefox(firefox_binary=binary)

8
धन्यवाद लेकिन मैं अपने सेट geckodriver.exeपर C:\Python\Python35\seleniumनिर्देशिका और मैं पथ सेट की तरह आप वर्णित लेकिन यह मुझे नीचे त्रुटि दे रही है:
tadm123

4
धन्यवाद @ सौरभ गौर, यह अब काम कर रहा है। मैंने फ़ायरफ़ॉक्स के पथ को सिस्टम चर में मैन्युअल रूप से जोड़ा और यह सब काम कर रहा है। लॉन्च करने में थोड़ा समय लगता है लेकिन मैं अनुमान लगा रहा हूं कि यह सामान्य है। धन्यवाद!
tadm123

3
मुझे त्रुटि "WebDriverException: संदेश: ब्राउज़र शुरू करने में विफल: अनुमति अस्वीकार" पहली बार में जब मैंने फ़ायरफ़ॉक्स बाइनरी पथ निर्दिष्ट करना शुरू किया, लेकिन कंप्यूटर (विंडोज 10) को पुनरारंभ करने से समस्या हल हो गई। - बस किसी और के मामले में मेरे जैसी ही समस्या है।
NoSuchElephantException

3
बाइनरी क्या है? क्या इसका मतलब निष्पादन योग्य है?
उपयोगकर्ता

12
इस उत्तर के अलावा, मैं PATHयूनिक्स वातावरण में स्थापित करने पर विस्तार करना चाहूंगा । आप इसे कोड में तब तक सेट कर सकते हैं, जब तक आपको सिस्टम वाइड की आवश्यकता न हो: os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/' या जियोड्रीड्रिवर बाइनरी को उस निर्देशिका में रखें जो आपके रास्ते में पहले से मौजूद है:mv geckodriver /usr/local/bin
dsalaj

161

इससे मेरे लिए हल हो गया।

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'your\path\geckodriver.exe')
driver.get('http://inventwithpython.com')

यदि आपको गलत अनुमति मिलती है, तो रास्ते से [r '] "excecutable_path =' पथ \ _ to your your'diretory 'को हटाने का प्रयास करें
Darius

@adityarawat आप किस ऑपरेटिंग सिस्टम पर हैं?
नेसा

लेकिन अब मैं गलत अनुमतियों के बजाय OSError प्राप्त कर रहा हूं। मैं किसी तरह से geckodriver को / usr / लोकल / बिन में कॉपी करने में कामयाब रहा। लेकिन अब यह नई त्रुटि मुझे मार रही है
आदित्य रावत

@adityarawat आप यहां से स्वतंत्र रूप से जेकोड्रीवर डाउनलोड कर सकते हैं: github.com/mozilla/geckodriver/releases इसे टार के साथ निकालें और इसे chmod + x के साथ निष्पादन योग्य बना दें, यह आपके / usr / स्थानीय / बिन में होने की जरूरत नहीं है, आपके पास बस है यह करने के लिए अपने रास्ते को निर्दिष्ट करने के लिए
Nesa

बस स्पष्ट होने के लिए मैंने arm7hf.tar फ़ाइल डाउनलोड की है और इसे भी निकाला है और इसे कमांड का उपयोग करके पथ में जोड़ा है export PATH=$PATH:geckodriver(इसे डेस्कटॉप में निकाला जाता है)। लेकिन यह भी मदद नहीं की। मुझे अभी भी OSError [इरनो 8]
आदित्य

121

यह कदम ubuntu 50 फ़ायरफ़ॉक्स पर मेरे लिए हल है।

  1. जेकोड्रीवर डाउनलोड करें

  2. भूकरोडर / usr / स्थानीय / बिन में कॉपी करें

आपको जोड़ने की आवश्यकता नहीं है

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'
browser = webdriver.Firefox(capabilities=firefox_capabilities)

अपने कोड में आप क्षमता परिवर्तन को नहीं जोड़ सकते हैं
एंड्रिया पेर्डिसिया

क्या आप जानते हैं कि फ़ायरफ़ॉक्स के लिए डाउनलोड निर्देशिका कैसे सेट की जाएगी? मैंने निम्नलिखित प्रश्न सेट किया फ़ायरफ़ॉक्स प्राथमिकताएँ । कोई भी सहायताकाफी प्रशंसनीय होगी।
d84_n1nj4

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

धन्यवाद। इस उत्तर को लागू करने के बाद, मैंने एक अनुवर्ती समस्या से निपटने के लिए इस समाधान को आगे बढ़ाया: stackoverflow.com/questions/43713445/…
HackNone

धन्यवाद, Pycharm geckodriver नहीं मिल रहा था, हालांकि यह घर में और प्रोजेक्ट फ़ोल्डर में ही था, लेकिन इसे / usr / लोकल / बिन पर ले जाने के बाद इसने पूरी तरह से काम किया
रोनाल्ड दास

32

@Saurabh द्वारा दिए गए उत्तर से समस्या हल हो जाती है, लेकिन यह स्पष्ट नहीं करता है कि पायथन के साथ बोरिंग सामग्री को स्वचालित करना उन चरणों को शामिल क्यों नहीं करता है।

यह पुस्तक सेलेनियम 2. x पर आधारित होने के कारण है और उस श्रृंखला के लिए फ़ायरफ़ॉक्स चालक को जेको चालक की आवश्यकता नहीं है। ब्राउज़र को चलाने के लिए गेको इंटरफ़ेस तब उपलब्ध नहीं था जब सेलेनियम विकसित किया जा रहा था।

नवीनतम संस्करण सेलेनियम 2.x श्रृंखला में 2.53.6 है (देखें उदाहरण के लिए इस जवाब , संस्करणों में से एक आसान दृश्य के लिए)।

2.53.6 संस्करण पेज बिल्कुल छिपकली उल्लेख नहीं है। लेकिन संस्करण 3.0.2 के बाद से प्रलेखन स्पष्ट रूप से बताता है कि आपको जेको चालक को स्थापित करने की आवश्यकता है।

अगर अपग्रेड के बाद (या किसी नए सिस्टम पर इंस्टॉल), आपका सॉफ्टवेयर जो पहले (या आपके पुराने सिस्टम पर) ठीक काम करता है वह अब काम नहीं करता है और आप जल्दी में हैं, अपने वर्चुअन में सेलेनियम संस्करण को पिन करके

pip install selenium==2.53.6

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


2
काश यह शीर्ष उत्तर होता
sudo-nim

1
इसने मेरी मदद की, धन्यवाद
एंथन

24

के साथ macOS पर Homebrew पहले से ही स्थापित आप बस टर्मिनल आदेश चला सकते हैं

$ brew install geckodriver

क्योंकि homebrew ने पहले से ही विस्तार कर लिया है PATHइसलिए किसी भी स्टार्टअप स्क्रिप्ट को संशोधित करने की कोई आवश्यकता नहीं है।


@roskakori मैंने यह किया और यह सफलतापूर्वक स्थापित हो गया लेकिन फिर भी मुझे वही त्रुटि मिल रही है
JKC

यह मेरे लिए किया, धन्यवाद। फ़ायरफ़ॉक्स 72.0.2 और सेलेनियम 3.141.0 का उपयोग करना
सैम

17

सेलेनियम पायथन के लिए जेकोड्राइवर स्थापित करने के लिए:

यह नीचे दिए गए कोड के रूप में FirefoxDriver के साथ जेकोड्राइवर पथ सेट करने की आवश्यकता है:

self.driver = webdriver.Firefox(executable_path = 'D:\Selenium_RiponAlWasim\geckodriver-v0.18.0-win64\geckodriver.exe')

अपने उपयुक्त OS के लिए geckodriver डाउनलोड करें ( https://github.com/mozilla/geckodriver/releases से ) -> इसे अपनी पसंद के फ़ोल्डर में निकालें -> ऊपर बताए अनुसार सही तरीके से पथ सेट करें

मैं विंडोज 10 में पायथन 3.6.2 और सेलेनियम वेबड्राइवर 3.4.3 का उपयोग कर रहा हूं।

जेकोड्राइवर सेट करने का दूसरा तरीका:

i) बस geckodriver.exe को / Python / Scripts / के तहत पेस्ट करें (मेरे मामले में फ़ोल्डर था: C: \ Python36 \ Scripts)
ii) अब नीचे दिए गए सरल कोड को लिखें:

self.driver = webdriver.Firefox()

17

यदि आप एनाकोंडा का उपयोग कर रहे हैं , तो आपको केवल अपने वर्चुअल वातावरण को सक्रिय करना होगा और फिर निम्नलिखित कमांड का उपयोग करके जियोड्रोडाइवर स्थापित करना होगा :

    conda install -c conda-forge geckodriver

हां, यह जियोकोड्राइवर स्थापित करता है, लेकिन pycharm त्रुटि समान रहती है।
वेबकॉमर

नमस्ते, मैंने कई चीजों की कोशिश की और केवल यही एक चीज है जो मेरे लिए काम करती है :-) धन्यवाद
tezzaaa

12

उबंटू 18.04+ और जियोकोड्राइवर का सबसे नया रिलीज़

यह अन्य * निक्स किस्मों के लिए भी काम करना चाहिए।

export GV=v0.26.0
wget "https://github.com/mozilla/geckodriver/releases/download/$GV/geckodriver-$GV-linux64.tar.gz"
tar xvzf geckodriver-$GV-linux64.tar.gz 
chmod +x geckodriver
sudo cp geckodriver /usr/local/bin/

मैक अपडेट के लिए:

geckodriver-$GV-macos.tar.gz

12

मुझे लगता है कि अभी भी चर्चा बाइनरी डाउनलोड करने और मैन्युअल रूप से पथ को कॉन्फ़िगर करने से जेकोड्राइवर स्थापित करने के पुराने तरीके के बारे में बात करती है।

यह वेबड्राइवर-मैनेजर का उपयोग करके स्वचालित रूप से किया जा सकता है

pip install webdriver-manager

अब प्रश्न में उपरोक्त कोड नीचे परिवर्तन के साथ काम करेगा,

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())

2
इसने मेरे लिए काम किया। धन्यवाद!
igorkf

क्या सफारी या यहां तक ​​कि इंटरनेट एक्सप्लोरर में एक समान ड्राइवर प्रबंधक है?
शरारत_मनखी

11

खिड़कियों के लिए सबसे आसान तरीका! यहां से
नवीनतम संस्करण डाउनलोड करेंPython निर्देशिका (या पहले से मौजूद कोई अन्य निर्देशिका ) में geckodriver.exe फ़ाइल जोड़ें । इस समस्या को हल करना चाहिए (विंडोज 10 पर परीक्षण)geckodriverPATH


सबसे खराब विंडोज़ नहीं है। त्वरित समाधान के लिए धन्यवाद।
AJ_

यह अब तक का सबसे आसान उपाय है !! अपने कंप्यूटर को पुनरारंभ करने की भी आवश्यकता नहीं है!
ओलेन्स्की

8

मैक के लिए कदम:

सरल उपाय यह है कि गेकोड्राइव को डाउनलोड करें और इसे अपने सिस्टम पथ में जोड़ें। आप दोनों में से किसी भी दृष्टिकोण का उपयोग कर सकते हैं:

लघु विधि:

1) डाउनलोड करें और जेककोड्रीवर को अनज़िप करें

2) ड्राइवर को शुरू करते समय पथ का उल्लेख करें:

driver = webdriver.Firefox(executable_path='/your/path/to/geckodriver')

लंबी विधि:

1) डाउनलोड करें और जेककोड्रीवर को अनज़िप करें

२) खुला .bash_profile। यदि आपने इसे अभी तक नहीं बनाया है, तो आप कमांड का उपयोग करके ऐसा कर सकते हैं touch ~/.bash_profile:। फिर इसका उपयोग करके खोलें:open ~/.bash_profile

3) अपने डाउनलोड फ़ोल्डर में जेकॉड्राइवर फ़ाइल को ध्यान में रखते हुए मौजूद है, आप .bash_profileफ़ाइल में निम्नलिखित पंक्ति जोड़ सकते हैं :

PATH="/Users/<your-name>/Downloads/geckodriver:$PATH"
export PATH

इसके द्वारा आप अपने सिस्टम PATH में GeckoDriver के लिए रास्ता जोड़ रहे हैं। यह सिस्टम को बताता है कि आपकी सेलेनियम स्क्रिप्ट निष्पादित करते समय गेकोड्राइव कहां स्थित है।

4) सहेजें .bash_profileऔर इसे निष्पादित करने के लिए मजबूर करें । यह रिबूट किए बिना तुरंत मानों को लोड करता है। ऐसा करने के लिए आप निम्नलिखित कमांड चला सकते हैं:

source ~/.bash_profile

5) यही बात है। आप कर चुके हैं!। आप अब पायथन स्क्रिप्ट चला सकते हैं।


1
मैं geckodriverहोमब्रे के साथ डाउनलोड करने में सक्षम था : brew install geckodriverऔर फिर फ़ायरफ़ॉक्स के माध्यम से आरंभ करें:driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
विंटरफ्लैग्स

7

इस धागे के भविष्य के पाठकों के लिए कुछ अतिरिक्त इनपुट / स्पष्टीकरण:

विंडोज 7, पायथन 3.6, सेलेनियम 3.11 के लिए रिज़ॉल्यूशन के रूप में निम्नलिखित पर्याप्त हैं:

@ यूनिक्स के लिए पहले इस थ्रेड में dsalaj का नोट विंडोज पर भी लागू होता है; पाथ एनव के साथ छेड़छाड़। विंडोज लेवल पर वेरिएबल और विंडोज सिस्टम को रीस्टार्ट करने से बचा जा सकता है।

(1) जेकोड्रीवर डाउनलोड करें (जैसा कि पहले इस धागे में वर्णित है) और एक्स (जीजेड) जेकड्राइवर। एक्स को एक्स: \ फोल्डर \ _ की अपनी पसंद पर रखें।

(2) पायथन कोड नमूना:

import os;
os.environ["PATH"] += os.pathsep + r'X:\Folder\of\your\choice';

from selenium import webdriver;
browser = webdriver.Firefox();
browser.get('http://localhost:8000')
assert 'Django' in browser.title

नोट: (1) उपरोक्त कोड को निर्दिष्ट यूआरएल के लिए फ़ायरफ़ॉक्स ब्राउज़र को खोलने में लगभग 10 सेकंड लग सकते हैं।
(2) अजगर कंसोल निम्नलिखित त्रुटि दिखाएगा यदि कोई सर्वर पहले से ही निर्दिष्ट यूआरएल पर नहीं चल रहा है या स्ट्रिंग 'Django' शीर्षक के साथ एक पृष्ठ पर काम कर रहा है: selenium.common.exception.WebDriverException: संदेश: पहुंच गया त्रुटि पृष्ठ: के बारे में : neterror ई = connectionFailure और यू = http% 3A // स्थानीय होस्ट% 3A8000 / & c = UTF-8 & f = नियमित एवं विकास = फ़ायरफ़ॉक्स% 20can% E2% 80% 9


धन्यवाद, मैंने अन्य सभी समाधानों की कोशिश की, लेकिन केवल आपके विंडोज पर काम किया!
पीएसओ

4

मैंने वास्तव में पता लगाया है कि आप नवीनतम जेकोड्रीवर का उपयोग सिस्टम पथ में डालने के साथ कर सकते हैं। वर्तमान में मैं उपयोग कर रहा हूं

https://github.com/mozilla/geckodriver/releases/download/v0.12.0/geckodriver-v0.12.0-win64.zip

फ़ायरफ़ॉक्स 50.1.0

पायथन 3.5.2

सेलेनियम 3.0.2

विंडोज 10

मैं एक VirtualEnv चला रहा हूं (जो मैं PyCharm का उपयोग करके प्रबंधित करता हूं, मुझे लगता है कि यह सब कुछ स्थापित करने के लिए Pip का उपयोग करता है)

निम्नलिखित कोड में मैं निष्पादन योग्य_पथ पैरामैटर का उपयोग करके जेकोड्राइवर के लिए एक विशिष्ट पथ का उपयोग कर सकता हूं (लिब \ साइट-पैकेज \ selenium \ webdriver \ firefox / webdriver.py में एक नज़र रखने से मुझे यह पता चलता है)। नोट मुझे संदेह है कि वेबड्राइवर को कॉल करते समय पैरामीटर तर्क का क्रम महत्वपूर्ण है, यही कारण है कि निष्पादन योग्य_पथ मेरे कोड में अंतिम है (दूसरा अंतिम पंक्ति दूर दाईं ओर)

आप यह भी देख सकते हैं कि मैं sec_error_unknown_issuer समस्या के आसपास प्राप्त करने के लिए एक कस्टम फ़ायरफ़ॉक्स प्रोफ़ाइल का उपयोग करता हूं जो कि यदि आप जिस साइट का परीक्षण कर रहे हैं, उस पर अविश्वास प्रमाण पत्र होगा। देखें कि सेलेनियम का उपयोग करके फ़ायरफ़ॉक्स के अविश्वसनीय कनेक्शन चेतावनी को कैसे अक्षम किया जाए?

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

वैसे भी यहाँ कोड है कि मुझे रास्ते में बिना काम करने के लिए जेकोड्राइवर कैसे मिला:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

#you probably don't need the next 3 lines they don't seem to work anyway
firefox_capabilities['handleAlerts'] = True
firefox_capabilities['acceptSslCerts'] = True
firefox_capabilities['acceptInsecureCerts'] = True

#In the next line I'm using a specific FireFox profile because
# I wanted to get around the sec_error_unknown_issuer problems with the new Firefox and Marionette driver
# I create a FireFox profile where I had already made an exception for the site I'm testing
# see https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_starting-the-profile-manager

ffProfilePath = 'D:\Work\PyTestFramework\FirefoxSeleniumProfile'
profile = webdriver.FirefoxProfile(profile_directory=ffProfilePath)
geckoPath = 'D:\Work\PyTestFramework\geckodriver.exe'
browser = webdriver.Firefox(firefox_profile=profile, capabilities=firefox_capabilities, executable_path=geckoPath)
browser.get('http://stackoverflow.com')

मुझे SyntaxError मिली: (यूनिकोड त्रुटि) 'यूनिकोडेसस्केप' कोडक बाइट्स को डिकोड नहीं कर सकता ... और मुझे gecko पाथ को epath = r'C: \ Users \ step_ \ Documents \ mgg_buyer \ geckodrivers \ geckodriver.exe 'में बदलना है। शायद इसका कारण यह है कि मैं एक चीनी विंडोज 10 का उपयोग कर रहा हूं?
एंडले_ज़ेनबो

3

मैं विंडोज 10 का उपयोग कर रहा हूं और यह मेरे लिए काम कर रहा है:

  1. यहाँ से जियोकोड्राइवर डाउनलोड करें । आपके द्वारा उपयोग किए जा रहे कंप्यूटर के लिए सही संस्करण डाउनलोड करें
  2. आपके द्वारा अभी डाउनलोड की गई फ़ाइल को अनज़िप करें और इसमें ".exe" फ़ाइल को काटें / कॉपी करें
  3. C पर नेविगेट करें: {आपका अजगर रूट फ़ोल्डर}। मेरा था C: \ Python27। इस फ़ोल्डर में geckodriver.exe फ़ाइल पेस्ट करें।
  4. अपने विकास के माहौल को फिर से शुरू करें।
  5. कोड को फिर से चलाने का प्रयास करें, यह अब काम करना चाहिए।

यह उल्लेख करने के लिए धन्यवाद कि आपको अपने विकास के वातावरण को पुनः आरंभ करने की आवश्यकता है।
दीप

3

एक कंटेनरीकृत फ़ायरफ़ॉक्स स्थापित करने पर विचार करें:

docker pull selenium/standalone-firefox
docker run --rm -d -p 5555:4444 --shm-size=2g selenium/standalone-firefox

का उपयोग कर कनेक्ट करें webdriver.Remote:

driver = webdriver.Remote('http://localhost:5555/wd/hub', DesiredCapabilities.FIREFOX)
driver.set_window_size(1280, 1024)
driver.get('https://toolbox.googleapps.com/apps/browserinfo/')
driver.save_screenshot('info.png')

2

यह वास्तव में दुखद है कि सेलेनियम / पायथन पर प्रकाशित पुस्तकों में से कोई भी और Google के माध्यम से इस मुद्दे पर अधिकांश टिप्पणियां मैक पर सब कुछ स्थापित करने के लिए स्पष्ट रूप से पथ तर्क को स्पष्ट नहीं करती हैं (सब कुछ विंडोज !!!!)। आप के बाद "पथपाकर" मिल गया है, आप सभी पिकअप (मेरे दिमाग में, सस्ता रास्ता)! तो, आप अद्भुत मैक उपयोगकर्ताओं के लिए, अपने bash पथ फ़ाइलों को संपादित करने के लिए निम्नलिखित का उपयोग करें:

> $ स्पर्श ~ / .bash_profile; खुला ~ / .bash_profile

फिर कुछ इस तरह से एक पथ जोड़ें .... * # जेकोड्राइवर के लिए पैथ सेट करना PATH = "/ usr / bin / geckodriver: $ {PATH}" निर्यात पथ

सेलेनियम फ़ायरफ़ॉक्स के लिए पथ की स्थापना

पथ = "~ / उपयोगकर्ता / अपनेNamePATH / VEnvPythonInterpreter / lib / python2.7 / साइट-संकुल / सेलेनियम / वेबड्राइवर / फ़ायरफ़ॉक्स /: $" PATH} "निर्यात पथ

फ़ायरफ़ॉक्स चालक पर निष्पादन योग्य के लिए पथ की स्थापना

PATH = "/ उपयोगकर्ता / yournamePATH / VEnvPythonInterpreter / lib / python2.7 / site-package / selenium / webdriver / common / service.py: $ "ATAT}" निर्यात PATH *

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


2

सेलेनियम इस सवाल का जवाब अपने DESCRIPTION.rst में देता है

Drivers
=======

Selenium requires a driver to interface with the chosen browser. Firefox,
for example, requires `geckodriver <https://github.com/mozilla/geckodriver/releases>`_, which needs to be installed before the below examples can be run. Make sure it's in your `PATH`, e. g., place it in `/usr/bin` or `/usr/local/bin`.

Failure to observe this step will give you an error `selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

मूल रूप से जियोकोड्राइवर डाउनलोड करें, इसे अनपैक करें और निष्पादन योग्य को अपने / usr / बिन फ़ोल्डर में स्थानांतरित करें


इस उद्धरण में 18 टकसाल टकसाल पर काम करने वाले निर्देश शामिल हैं।
इलियट रॉबर्ट

2

विंडोज़ उपयोगकर्ताओं के लिए

मूल कोड का उपयोग करें क्योंकि यह है:

from selenium import webdriver
browser = webdriver.Firefox()
driver.get("https://www.google.com")

फिर से ड्राइवर डाउनलोड करें: मोज़िला / जेकोड्राइवर

इसे एक निश्चित पथ (स्थायी रूप से) में रखें .. उदाहरण के रूप में, मैंने इसे इसमें डाला:

C: \ Python35

फिर सिस्टम के पर्यावरण चर पर जाएं, "सिस्टम चर" की ग्रिड में पथ चर के लिए देखो और जोड़ें:

; C: \ Python35 \ geckodriver

geckodriver, geckodriver.exe नहीं


geckodriver, geckodriver.exe नहीं।
सौरभ चंद्र पटेल

1

रास्पबेरी पाई पर मुझे एआरएम चालक से बनाना था और जेकोड्राइवर और लॉग पथ में सेट करना था:

sudo nano /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py

def __init__(self, firefox_profile=None, firefox_binary=None,
             timeout=30, capabilities=None, proxy=None,
             executable_path="/PATH/gecko/geckodriver",                     
firefox_options=None,
             log_path="/PATH/geckodriver.log"):

1

यदि आप वर्चुअल वातावरण और win10 का उपयोग करते हैं (हो सकता है कि यह अन्य प्रणालियों के लिए हो), तो आपको बस अपने वर्चुअल वातावरण निर्देशिका में geckodriver.exe को निम्न फ़ोल्डर में डालने की आवश्यकता है:

... \ my_virtual_env_directory \ स्क्रिप्ट \ geckodriver.exe


1
from webdriverdownloader import GeckoDriverDownloader # vs ChromeDriverDownloader vs OperaChromiumDriverDownloader
gdd = GeckoDriverDownloader()
gdd.download_and_install()
#gdd.download_and_install("v0.19.0")

यह आपको विंडोज़ पर अपने gekodriver.exe के लिए रास्ता देगा

from selenium import webdriver
driver = webdriver.Firefox(executable_path=r'C:\\Users\\username\\\bin\\geckodriver.exe')
driver.get('https://www.amazon.com/')

0

मैक 10.12.1 अजगर 2.7.10 मेरे लिए यह काम :)

def download(url):
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
browser = webdriver.Firefox(capabilities=firefox_capabilities,
                            executable_path=r'/Users/Do01/Documents/crawler-env/geckodriver')
browser.get(url)
return browser.page_source

0

मैं विंडोज 10 और एनाकोंडा 2 का उपयोग कर रहा हूं। मैं सिस्टम पथ चर स्थापित करने की कोशिश की, लेकिन काम नहीं किया। तब मैंने बस Anaconda2 / Scripts फ़ोल्डर में geckodriver.exe फ़ाइल जोड़ी और अब सब कुछ बढ़िया काम करता है। मेरे लिए रास्ता था: -

C: \ Users \ भव्य \ Anaconda2 \ स्क्रिप्ट


0

यदि आप विंडोज 10 पर ड्राइवर पथ जोड़ना चाहते हैं:

  1. "यह पीसी" आइकन पर राइट क्लिक करें और "गुण" चुनें यहां छवि विवरण दर्ज करें

  2. "उन्नत सिस्टम सेटिंग्स" पर क्लिक करें

  3. स्क्रीन के नीचे "पर्यावरण चर" पर क्लिक करें
  4. "उपयोगकर्ता चर" अनुभाग में "पथ" को हाइलाइट करें और "संपादित करें" पर क्लिक करें
  5. "नया" पर क्लिक करके और अपने द्वारा जोड़े जा रहे ड्राइवर के लिए पथ में टाइप करके अपने चर में पथ जोड़ें।
  6. एक बार जब आप पथ में प्रवेश करते हैं, तो "ओके" पर क्लिक करें
  7. "ओके" पर क्लिक करते रहें जब तक कि आपने सभी स्क्रीन को बंद नहीं कर दिया


0
  1. सुनिश्चित करें कि आपके पास ड्राइवर (जेकोड्राइवर), x86 या 64 का सही संस्करण है।
  2. सुनिश्चित करें कि आप सही वातावरण की जाँच कर रहे हैं, उदाहरण के लिए नौकरी डॉक में चल रही है, जबकि environmnet की जाँच होस्ट ओएस है

0

मेरे लिए यह केवल एक ही वातावरण में जियोकोड्राइवर स्थापित करने के लिए पर्याप्त था:

$ brew install geckodriver

और कोड नहीं बदला गया था:

from selenium import webdriver
browser = webdriver.Firefox()

0

मेरे 5 सेंट जोड़ने के लिए, यह echo PATH(लिनक्स) करना भी संभव है और जियोकोड्राइवर को अपनी पसंद के फ़ोल्डर में ले जाएं। यदि कोई सिस्टम (वर्चुअल वातावरण नहीं) फ़ोल्डर लक्ष्य है, तो ड्राइवर विश्व स्तर पर सुलभ हो जाता है।

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