การใช้ Selenium WebDriver python bindings ในโครเมียม


147

ฉันพบปัญหาขณะทำงานกับซีลีเนียม สำหรับโครงการของฉันฉันต้องใช้ Chrome อย่างไรก็ตามฉันไม่สามารถเชื่อมต่อกับเบราว์เซอร์นั้นได้หลังจากเปิดใช้งานด้วย Selenium

ด้วยเหตุผลบางอย่างซีลีเนียมไม่สามารถค้นหา 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'

เพื่อแก้ปัญหานี้ฉันจึงรวมเส้นทาง Chromium ในรหัสที่เปิดใช้งาน Chrome อย่างไรก็ตามล่ามล้มเหลวในการค้นหาซ็อกเก็ตเพื่อเชื่อมต่อกับ:

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'

ฉันยังพยายามแก้ไขปัญหาด้วยการเปิดตัว Chrome ด้วย:

โครเมียม --remote-shell-port = 9222

อย่างไรก็ตามสิ่งนี้ไม่ได้ผลเช่นกัน

PS นี่คือข้อมูลเกี่ยวกับระบบของฉัน:

www-client: chromium 15.0.874.121  
dev-lang: python 2.7.2-r3 Selenium 2.11.1  
ระบบปฏิบัติการ: GNU / Linux Gentoo Kernel 3.1.0-gentoo-r1

ฉันแค่อยากให้คุณรู้ว่า "--remote-shell-port" ไม่ใช่ตัวเลือกบรรทัดคำสั่งที่ถูกต้อง โปรดดู: peter.sh/experiments/chromium-command-line-switches ("--remote-debugging-port" จะเป็นอันที่ถูกต้องโปรดทราบว่าคุณจำเป็นต้องปิดอินสแตนซ์โครเมียมทั้งหมดก่อนที่จะใช้ตัวเลือกนั้น หน้าต่างใหม่ในเซสชันเบราว์เซอร์ที่มีอยู่ไม่ทำงาน)
dpat

คำตอบ:


133

คุณต้องตรวจสอบให้แน่ใจว่าไบนารี ChromeDriver แบบสแตนด์อโลน (ซึ่งแตกต่างจากไบนารีเบราว์เซอร์ Chrome) อยู่ในเส้นทางของคุณหรือมีอยู่ในตัวแปรสภาพแวดล้อม webdriver.chrome.driver

ดูhttp://code.google.com/p/selenium/wiki/ChromeDriverสำหรับข้อมูลทั้งหมดเกี่ยวกับการเชื่อมโยง

แก้ไข:

ถูกต้องดูเหมือนว่าจะเป็นข้อบกพร่องในการผูก Python อ่าน wrt chromedriver จากเส้นทางหรือตัวแปรสภาพแวดล้อม ดูเหมือนว่าถ้า 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()

ขออภัยที่ต้องพูดถึงว่า ฉันได้รับลิงค์นี้
Akendo

2
พยายาม Chromedriver แทน Firefox Webdriver .. เพิ่มประสิทธิภาพการทำงานเกือบ 3 เท่า ..
UberNeo

4
นอกจากนี้เพียงแค่ต้องการที่จะพูดถึงว่าอาร์กิวเมนต์ที่ส่งผ่านไปสร้างเป็นเส้นทางไปยังChromeDriver ไบนารีและไม่ไดเรกทอรีที่มีไบนารี ChromeDriver (ที่สูญเสียไปในช่วงครึ่งปีที่ผ่านมาหนึ่งชั่วโมงในการหาสิ่งที่เกิดขึ้นผิด)
TheRookierLearner

107

สำหรับ Linux

  1. ตรวจสอบว่าคุณได้ติดตั้ง chrome brwoser-> เวอร์ชันล่าสุดแล้ว chromium-browser -version
  2. ถ้าไม่ติดตั้ง Chrome รุ่นล่าสุด sudo apt-get install chromium-browser
  3. รับไดรเวอร์ Chrome รุ่นที่เหมาะสมจากที่นี่
  4. คลายซิปที่ chromedriver.zip
  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
ดีมาก! One note: ฉันสามารถใช้กับ Chromedriver แบบ 32 บิตได้แม้ว่าฉันจะใช้ Linux 64 บิตก็ตาม
Imran

บน Ubuntu (14.04) คุณสามารถติดตั้งแพ็คเกจ Chromium-chromdriver (เช่น apt-get) และเพิ่มพา ธ ของไฟล์ chromedriver ไปยังตัวแปรเชลล์ PATH PATH = "$ {PATH}": / usr / lib / chromium-browser / หากคุณเพิ่มสิ่งนี้ลงใน. bashrc ของคุณคุณไม่จำเป็นต้องตั้งค่าทุกครั้งที่คุณต้องการทดสอบด้วยซีลีเนียม
Arpad Horvath

1
ที่จริงคำตอบนี้ควรมี upvotes มากขึ้น โดยทั่วไปนี่เป็นวิธีที่จะไปสำหรับผู้ขับขี่ทุกคนเช่นตุ๊กแก
holzkohlengrill

รุ่นโครเมียมเบราว์เซอร์ของฉันถูกกล่าวถึงเป็น (Chromium 67.0.3396.99 สร้างขึ้นบน Ubuntu ทำงานบน Ubuntu 16.04) แต่ลิงก์มีรุ่นเป็น 2.0-2.9 เท่านั้น ต้องการความช่วยเหลือ.
Vaibhav Maheshwari

93

Mac OSX เท่านั้น

วิธีที่ง่ายกว่าที่จะไป (สมมติว่าคุณติดตั้งhomebrewไว้แล้วซึ่งหากคุณไม่ควรทำก่อนอื่นและให้ homebrew ทำให้ชีวิตของคุณดีขึ้น) คือการเรียกใช้คำสั่งต่อไปนี้:

brew install chromedriver

นั่นควรใส่ Chromedriver ในเส้นทางของคุณและคุณควรจะตั้งค่าทั้งหมด


มันใช้งานไม่ได้กับ Mac selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
wyx

1
@wyx สภาพแวดล้อมของคุณอาจไม่ถูกต้อง ลองเรียกใช้brew doctorและดูว่าพบสิ่งใดบ้าง
Jachin

2
นี่เป็นช่วงเวลาที่อบอุ่นและเลือนเมื่อคุณมีความสุขที่มี Mac ง่ายมาก.
ผู้ใช้

หัวใจ! ฉันชอบชง
RHSMan

52

สำหรับ windows

ดาวน์โหลด ChromeDriver จาก ลิงก์โดยตรง หรือรับรุ่นล่าสุดจากหน้านี้

วางchromedriver.exeไฟล์ในC:\Python27\Scriptsโฟลเดอร์ของคุณ

สิ่งนี้ควรใช้งานได้แล้ว:

from selenium import webdriver
driver = webdriver.Chrome()

23

สำหรับ windows โปรดchromedriver.exeวางไว้ใต้<Install Dir>/Python27/Scripts/


และสถานที่ที่จะใส่ในอูบุนตู? int /usr/lib/หรือที่อื่น?
Gaurav Jain

การมีไฟล์PATHไม่เพียงพอให้วางใน/Scripts/ตำแหน่งที่ride.pyทำงาน
Qwerty

1

มี 2 ​​วิธีในการเรียกใช้การทดสอบหลามของ Selenium ใน Google Chrome ฉันกำลังพิจารณา Windows (Windows 10 ในกรณีของฉัน):

วิชาบังคับก่อน:ดาวน์โหลดไดรเวอร์ Chrome ล่าสุดจาก: https://sites.google.com/a/chromium.org/chromedriver/downloads

วิธีที่ 1:

i) แตกไฟล์ zip ที่ดาวน์โหลดมาในไดเรกทอรี / ตำแหน่งที่คุณเลือก
ii) ตั้งค่าพา ธ ที่สามารถใช้งานได้ในโค้ดของคุณดังนี้:

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

วิธีที่ 2:

i) เพียงวาง chromedriver.exe ใต้ / Python / Scripts / (ในกรณีของฉันโฟลเดอร์คือ: C: \ Python36 \ Scripts)
ii) ตอนนี้เขียนโค้ดง่าย ๆ ดังนี้:

self.driver = webdriver.Chrome()

-1

สำหรับ Windows 'IDE:

หากเส้นทางของคุณไม่ทำงานคุณสามารถลองเพิ่มลงในchromedriver.exeโครงการของคุณเช่นในโครงสร้างโครงการนี้

chromedriver.exe

จากนั้นคุณควรโหลดchromedriver.exeไฟล์หลักของคุณ ในฐานะที่เป็นสำหรับฉันฉันโหลดในdriver.exedriver.py

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

..หมายถึงdriver.py'sไดเรกทอรีบน

. หมายถึงไดเรกทอรีที่ driver.pyตั้งอยู่

หวังว่านี่จะเป็นประโยชน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.