13

मैं सेलेनियम के साथ नए (2016) नेतृत्वहीन क्रोमियम का संस्करण का उपयोग करने की कोशिश कर रहा हूँ/ChromeDriver (अतीत में, मैं फ़ायरफ़ॉक्स xfvb के साथ प्रयोग किया है, लेकिन इस का वादा किया काफी बेहतर)।सेलेनियम ChromeDriver नव संकलित नहीं पहचानता है बिना सिर क्रोमियम (अजगर)

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 

l_option = Options() 
l_option.add_argument('headless') 
l_option.add_argument('disable-notifications') 
l_option.binary_location = '/home/fi11222/Headless_Chromium/headless_shell' 
l_driver = webdriver.Chrome(chrome_options=l_option) 
:

मैं स्रोतों से क्रोमियम का एक बिना सिर संस्करण तैयार की है निर्देश मैं here पाया और के आधार पर (मैं नहीं किसी भी पहले से बने बाइनरी मिला) तो मैं सेलेनियम के माध्यम से शुरू करने के लिए निम्नलिखित कोड का इस्तेमाल किया

एक ही कोड मानक क्रोमियम के साथ काम करता

के रूप में है, तथापि, मैं निम्नलिखित त्रुटि मिलती है (अगर मैं binary.location विकल्प निकालने के लिए):

selenium.common.exceptions.WebDriverException: Message: unknown error: unrecognized Chrome version: HeadlessChrome/59.0.3032.0 
    (Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.4.0-53-generic x86_64) 

स्पष्ट रूप से, हेडलेस क्रोमियम बाइनरी को एक संस्करण आईडी के साथ संकलित किया गया है जो ChromeDriver पहचान नहीं पाता है। मदद !!

पर्यावरण:

  • संकलन: उबंटू 16.04 सर्वर
  • सेलेनियम निष्पादन: लिनक्स टकसाल 18,1
+0

अपने क्रोम ड्राइवर का समर्थित क्रोम संस्करण देखें। मैंने पढ़ा है कि यह क्रोम 54 से 56 का समर्थन करता है जबकि आपका हेडलेस क्रोम 59 है। पिछले क्रोम संस्करण – BangTheBank

+3

स्थापित करने का प्रयास करें। क्योंकि 59 से पहले संस्करण स्पष्ट रूप से हेडलेस मोड का समर्थन नहीं करते थे। यह सुविधा केवल मध्य 2016 तक ही है। बीटीडब्ल्यू, मैं कैसे जान सकता हूं कि क्रोम वेबड्राइवर का कौन सा विशेष संस्करण समर्थन करता है? – fi11222

+0

इसके अलावा, मैंने ChromeDriver स्रोतों में चेक किया है। स्पष्ट रूप से कोई अधिकतम संस्करण नहीं है, केवल न्यूनतम, जो अब 55 स्पष्ट रूप से है। तो समस्या कहीं और है। – fi11222

उत्तर

11

ChromeHeadless this patch के बाद से (बनाया आप अपना संदेश पोस्ट किया है के बाद) chromedriver द्वारा मान्यता प्राप्त है, जो क्रोमरेड्रिवर 2.2 9 (अप्रैल 2017 में जारी) के बाद ही उपलब्ध है। सुनिश्चित करें कि आपके पास इस क्रोमरेड्रिवर निष्पादन योग्य है जो पीएटीएच में उपलब्ध है और सेलेनियम आपके द्वारा उपलब्ध किसी भी अन्य क्रोमरेड्रिवर के बजाय इसे उठा रहा है।

इसके अलावा, कृपया ध्यान दें कि - headless Chrome documentation के अनुसार - आप दो और झंडे पारित करने के लिए की जरूरत है:

l_option.add_argument('remote-debugging-port=9222') 
l_option.add_argument('disable-gpu') 

नेतृत्वहीन क्रोम के पहले से बने binaries के लिए के रूप में - कि विकल्प तो यह है, क्रोम 57 के बाद से उपलब्ध है वर्तमान में आधिकारिक Google भंडार (यानी स्थिर क्रोम 58 और अस्थिर क्रोम 59) के माध्यम से वितरित सभी संस्करणों द्वारा समर्थित है। यह Chrome 59 की हाइलाइट है, इसलिए फीचर स्थिर होने तक कुछ मोटे किनारों की अपेक्षा करें।

+1

अतिरिक्त विकल्प क्रोम को पहुंचने योग्य नहीं बनाते, मेरे लिए केवल आवश्यक विकल्प 'विकल्प .add_argument (' headless ')' और 'options.add_argument ('window-size = 1904x950')'। – tarikki

+1

मैं क्रोमड्राइवर 2.32 का उपयोग कर आवश्यक झंडे के साथ उपयोग कर रहा हूं लेकिन मैं अभी भी काम करने के लिए सिरदर्द नहीं हो सकता। –

+1

@ सेबेस्टियन मुझे भी। मुझे संदेह है क्योंकि हम अब क्रोम 60 का उपयोग कर रहे हैं, लेकिन अभी तक एक फिक्स नहीं मिला है। क्या आपने इसे ठीक करने का प्रबंधन किया था? – goose

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