क्रोम में सेलेनियम वेबड्राइवर पायथन बाइंडिंग चल रहा है


147

मैं सेलेनियम के साथ काम करते समय एक समस्या में भाग गया। अपने प्रोजेक्ट के लिए, मुझे Chrome का उपयोग करना होगा। हालाँकि, मैं इसे सेलेनियम के साथ लॉन्च करने के बाद उस ब्राउज़र से कनेक्ट नहीं कर सकता।

किसी कारण से, सेलेनियम क्रोम को अपने आप नहीं ढूंढ सकता है। ऐसा तब होता है जब मैं एक पथ को शामिल किए बिना Chrome लॉन्च करने का प्रयास करता हूं:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome() # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 58, in start
    and read up at http://code.google.com/p/selenium/wiki/ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.                 Please download from http://code.google.com/p/selenium/downloads/list                and read up at http://code.google.com/p/selenium/wiki/ChromeDriver'

इस समस्या को हल करने के लिए, मैंने फिर क्रोम लॉन्च करने वाले कोड में क्रोमियम पथ को शामिल किया। हालाँकि, दुभाषिया कनेक्ट करने के लिए सॉकेट खोजने में विफल रहता है:

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome('/usr/bin/chromium') # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 64, in start
    raise WebDriverException("Can not connect to the ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'Can not connect to the ChromeDriver'

मैंने क्रोम को लॉन्च करके समस्या को हल करने की भी कोशिश की:

क्रोमियम - सुप्रीमो-शेल-पोर्ट = 9222

हालांकि, यह भी काम नहीं किया।

पुनश्च। यहाँ मेरे सिस्टम के बारे में कुछ जानकारी है:

www-ग्राहक: क्रोमियम 15.0.874.121  
देव-लैंग: अजगर 2.7.2-r3 सेलेनियम 2.11.1  
OS: GNU / Linux Gentoo कर्नेल 3.1.0-gentoo-r1

मैं आपको यह बताना चाहता था कि "--remote-shell-port" एक मान्य कमांड लाइन विकल्प नहीं है। देखें: peter.sh/experiments/chromium-command-line-switches ("--remote-debugging-port" सही होगा। कृपया ध्यान रखें कि आपको उस विकल्प का उपयोग करने से पहले सभी क्रोमियम उदाहरणों को बंद करने की आवश्यकता है। Ie बनाने के लिए। मौजूदा ब्राउज़र सत्र में नई विंडो काम नहीं करती है)।
15

जवाबों:


133

आपको यह सुनिश्चित करने की आवश्यकता है कि स्टैंडअलोन क्रोमड्राइवर बाइनरी (जो कि क्रोम ब्राउज़र बाइनरी से अलग है) या तो आपके रास्ते में है या वेबड्राइवर.क्रोम.ड्राइवर पर्यावरण चर में उपलब्ध है।

कैसे तार चीजों पर पूरी जानकारी के लिए http://code.google.com/p/selenium/wiki/ChromeDriver देखें ।

संपादित करें:

सही लगता है, पथ या पर्यावरण चर से क्रोमेड्रिवर बाइनरी को पढ़ते हुए पायथन बाइंडिंग में एक बग प्रतीत होता है । लगता है कि यदि क्रोमेड्राइवर आपके रास्ते में नहीं है, तो आपको इसे कंस्ट्रक्टर के तर्क के रूप में पारित करना होगा।

import os
from selenium import webdriver

chromedriver = "/Users/adam/Downloads/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get("http://stackoverflow.com")
driver.quit()

खेद है कि उल्लेख करना भूल जाओ। मुझे यह लिंक मिल गया।
15 अगस्त को 15

2
फ़ायरफ़ॉक्स वेबड्राइवर के बजाय क्रोमेड्रिवर की कोशिश की .. लगभग 3 गुना प्रदर्शन हासिल किया ..
UberNeo

4
इसके अलावा, सिर्फ इतना है कि तर्क निर्माता के लिए पारित करने के लिए पथ है उल्लेख करना चाहते ChromeDriver द्विआधारी और निर्देशिका ChromeDriver द्विआधारी युक्त (पिछले आधे घंटे बर्बाद पता लगाना क्या गलत हो रहा था)।
TheRookierLearner

107

लिनक्स के लिए

  1. जांचें कि आपने क्रोम ब्रूसर का नवीनतम संस्करण स्थापित किया है-> chromium-browser -version
  2. यदि नहीं, तो क्रोम का नवीनतम संस्करण स्थापित करें sudo apt-get install chromium-browser
  3. से क्रोम चालक का उपयुक्त संस्करण प्राप्त करें यहाँ करें
  4. क्रोमेड्रिवर को खोल दो। ज़िप
  5. फ़ाइल को इसमें स्थानांतरित करें /usr/bin निर्देशिका मेंsudo mv chromedriver /usr/bin
  6. के लिए जाओ /usr/bin निर्देशिकाcd /usr/bin
  7. अब, आपको कुछ चलाने की आवश्यकता होगी sudo chmod a+x chromedriver इसे निष्पादन योग्य चिह्नित करने के लिए ।
  8. अंत में आप कोड निष्पादित कर सकते हैं।

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("http://www.google.com")
    print driver.page_source.encode('utf-8')
    driver.quit()
    display.stop()

1
बहुत अच्छा! एक नोट: मैं केवल 32-बिट क्रोमेड्रिवर के साथ काम करने के लिए इसे प्राप्त करने में सक्षम था, हालांकि मैं 64-बिट लिनक्स चला रहा हूं।
इमरान

उबंटू (14.04) पर आप क्रोमियम-क्रोमड्राइवर पैकेज स्थापित कर सकते हैं (जैसे apt-get के साथ) और क्रोमेड्राइवर फ़ाइल का पथ PATH शेल वैरिएबल PATH = "$ {PATH}" में जोड़ें: usr / lib / क्रोमियम-ब्राउज़र / यदि आप इसे अपने .bashrc में जोड़ते हैं, तो आपको सेलेनियम के साथ परीक्षण करने के लिए हर बार इसे सेट करने की आवश्यकता नहीं होगी।
अरपद होरवथ

1
वास्तव में इस जवाब में और भी बहुत कुछ होना चाहिए। मूल रूप से यह जेकोड्राइवर की तरह हर ड्राइवर के लिए जाने का तरीका है।
holzkohlengrill

मेरे क्रोमियम-ब्राउज़र संस्करण को (क्रोमियम 67.0.3396.99 Ubuntu पर निर्मित, उबंटू 16.04 पर चल रहा है) के रूप में उल्लेख किया गया है, लेकिन लिंक में केवल संस्करण 2.0-2.9 हैं। कुछ मदद की जरूरत है।
वैभव माहेश्वरी

93

मैक OSX ही

जाने का एक आसान तरीका (यह मानते हुए कि आपके पास पहले से ही होमब्रेव स्थापित है, जिसे आपको चाहिए, यदि नहीं, तो पहले ऐसा करें और होमब्रे को अपना जीवन बेहतर बनाने दें) बस निम्नलिखित कमांड को चलाना है:

brew install chromedriver

कि अपने रास्ते में क्रोमेड्राइवर डालना चाहिए और आपको सभी सेट होना चाहिए।


यह मैक पर काम नहीं कर सकता। selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
wyx

1
@wyx आपका वातावरण सही सेटअप नहीं हो सकता है। दौड़ने की कोशिश करें brew doctorऔर देखें कि क्या कुछ मिलता है।
जचिन

2
यह उन गर्म और फजी क्षणों में से एक है जब आप बस खुश होते हैं कि आपके पास मैक है। इतना आसान।
उपयोगकर्ता

दिल! मुझे काढ़ा पसंद है
RHSMan

52

विंडोज के लिए

इस प्रत्यक्ष लिंक से क्रोमड्राइवर डाउनलोड करें या इस पृष्ठ से नवीनतम संस्करण प्राप्त करें

chromedriver.exeफ़ाइल को अपने में चिपकाएँC:\Python27\Scripts फोल्डर ।

यह अब काम करना चाहिए:

from selenium import webdriver
driver = webdriver.Chrome()

23

खिड़कियों के लिए, कृपया के chromedriver.exeनीचे रखा है<Install Dir>/Python27/Scripts/


और कहां ubuntu में डाल दिया? int /usr/lib/या कहीं और?
गौरव जैन

फ़ाइल के लिए PATHपर्याप्त नहीं है, /Scripts/जहां ride.pyयह काम कर रहा है।
क्वर्टी

1

Google Chrome में सेलेनियम पायथन परीक्षण चलाने के 2 तरीके हैं। मैं विंडोज पर विचार कर रहा हूं (मेरे मामले में विंडोज 10):

शर्त: नवीनतम क्रोम चालक से डाउनलोड करें: https://sites.google.com/a/chromium.org/chromedriver/downloads

रास्ता 1:

i) डाउनलोड की गई ज़िप फ़ाइल को अपनी पसंद की निर्देशिका / स्थान में निकालें
ii) नीचे दिए गए अनुसार अपने कोड में निष्पादन योग्य पथ सेट करें:

self.driver = webdriver.Chrome(executable_path='D:\Selenium_RiponAlWasim\Drivers\chromedriver_win32\chromedriver.exe')

रास्ता 2:

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

self.driver = webdriver.Chrome()

-1

विंडोज आईडीई के लिए:

यदि आपका रास्ता काम नहीं करता है, तो आप chromedriver.exeइस प्रोजेक्ट संरचना की तरह, अपने प्रोजेक्ट को जोड़ने का प्रयास कर सकते हैं ।

chromedriver.exe

फिर आपको chromedriver.exeअपनी मुख्य फ़ाइल में लोड करना चाहिए । मेरे लिए, मैंने अंदर लोड driver.exeकिया driver.py

def get_chrome_driver():
return webdriver.Chrome("..\\content\\engine\\chromedriver.exe",
                            chrome_options='--no-startup-window')

..driver.py'sऊपरी निर्देशिका का मतलब है

.निर्देशिका का अर्थ है जहां driver.pyस्थित है

आशा है कि यह मददगार होगा।

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