Chạy liên kết python SelDium WebDriver trong chrome


147

Tôi gặp vấn đề khi làm việc với Selenium. Đối với dự án của tôi, tôi phải sử dụng Chrome. Tuy nhiên, tôi không thể kết nối với trình duyệt đó sau khi khởi chạy nó với Selenium.

Vì một số lý do, Selenium không thể tự tìm thấy Chrome. Đây là những gì xảy ra khi tôi cố gắng khởi chạy Chrome mà không bao gồm đường dẫn:

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'

Để giải quyết vấn đề này, sau đó tôi đã đưa đường dẫn Chromium vào mã khởi chạy Chrome. Tuy nhiên, trình thông dịch không tìm thấy ổ cắm để kết nối với:

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'

Tôi cũng đã thử giải quyết vấn đề bằng cách khởi chạy chrome với:

crom --remote-shell-port = 9222

Tuy nhiên, điều này cũng không hoạt động.

Tái bút Dưới đây là một số thông tin về hệ thống của tôi:

khách hàng www: crom 15.0.874.121  
dev-lang: trăn 2.7.2-r3 Selen 2.11.1  
HĐH: GNU / Linux Gentoo Kernel 3.1.0-gentoo-r1

Tôi chỉ muốn cho bạn biết rằng "--remote-shell-port" không phải là một tùy chọn dòng lệnh hợp lệ. Xem: peter.sh/experiment/chromium-command-line-switches ("--remote-debugging-port" sẽ là chính xác. Xin lưu ý rằng bạn cần đóng tất cả các trường hợp crom trước khi sử dụng tùy chọn đó. cửa sổ mới trong phiên trình duyệt hiện tại không hoạt động).
dpat 7/11/2016

Câu trả lời:


133

Bạn cần đảm bảo nhị phân ChromeDriver độc lập (khác với nhị phân trình duyệt Chrome) nằm trong đường dẫn của bạn hoặc có sẵn trong biến môi trường webdo.chrome.driver.

xem http://code.google.com.vn/p/selenium/wiki/ChromeDriver để biết thông tin đầy đủ về cách thức kết nối mọi thứ.

Biên tập:

Phải, dường như là một lỗi trong các ràng buộc Python wrt đọc nhị phân chromedriver từ đường dẫn hoặc biến môi trường. Có vẻ như nếu chromedriver không nằm trong đường dẫn của bạn, bạn phải chuyển nó dưới dạng đối số cho hàm tạo.

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()

Xin lỗi quên đề cập đến điều đó. Tôi có liên kết này.
Akendo

2
Đã thử Chromedriver thay vì Firefox Webdo .. tăng gần 3 lần hiệu suất ..
UberNeo

4
Ngoài ra, chỉ muốn đề cập đến rằng đối số truyền cho constructor là đường dẫn đến ChromeDriver nhị phânkhông các thư mục chứa các nhị phân ChromeDriver (lãng phí nửa qua một tiếng đồng hồ để tìm ra những gì đã xảy ra sai).
TheRookierLearner

107

Dành cho Linux

  1. Kiểm tra xem bạn đã cài đặt phiên bản mới nhất của chrome brwoser-> chromium-browser -version
  2. Nếu không, hãy cài đặt phiên bản chrome mới nhất sudo apt-get install chromium-browser
  3. lấy phiên bản phù hợp của trình điều khiển chrome từ đây
  4. Giải nén chromedriver.zip
  5. Di chuyển tệp đến /usr/bin thư mụcsudo mv chromedriver /usr/bin
  6. Đi đến /usr/bin thư mụccd /usr/bin
  7. Bây giờ, bạn sẽ cần phải chạy một cái gì đó như sudo chmod a+x chromedriver để đánh dấu nó thực thi.
  8. cuối cùng bạn có thể thực thi mã.

    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
Rất đẹp! Một lưu ý: Tôi chỉ có thể làm cho nó hoạt động với chromedriver 32 bit mặc dù tôi đang chạy linux 64 bit.
Imran

Trên Ubuntu (14.04), bạn có thể cài đặt gói chromium-chromdo (ví dụ với apt-get) và thêm đường dẫn của tệp chromedriver vào biến vỏ PATH PATH = "$ {PATH}": / usr / lib / chromium-browser / Nếu bạn thêm phần này vào .bashrc, bạn sẽ không cần đặt nó mỗi lần bạn muốn kiểm tra bằng selen.
Arpad Horvath

1
thực sự câu trả lời này nên có nhiều upvote hơn. về cơ bản, đây là con đường dành cho mọi tài xế như con tắc kè.
holzkohlengrill

Phiên bản trình duyệt chromium của tôi được đề cập là (Chromium 67.0.3394.99 Được xây dựng trên Ubuntu, chạy trên Ubuntu 16.04) nhưng liên kết chỉ có các phiên bản là 2.0-2.9. Cần giúp đỡ.
Vaibhav Maheshwari

93

Chỉ dành cho Mac OSX

Một cách dễ dàng hơn để đi (giả sử bạn đã cài đặt homebrew , nếu không, hãy làm điều đó trước và để homebrew làm cho cuộc sống của bạn tốt hơn) là chạy lệnh sau:

brew install chromedriver

Điều đó sẽ đặt chromedriver trong đường dẫn của bạn và bạn sẽ được thiết lập tất cả.


Nó không thể hoạt động trên Mac. selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
wyx

1
@wyx Môi trường của bạn có thể không được thiết lập đúng. Hãy thử chạy brew doctorvà xem nếu tìm thấy bất cứ điều gì.
Jachin

2
Đây là một trong những khoảnh khắc ấm áp và mờ nhạt khi bạn hạnh phúc khi có máy Mac. Quá dễ.
Người dùng

TIM! Tôi yêu bia
RHSMan

52

Cho cửa sổ

Tải xuống ChromeDriver từ liên kết trực tiếp này HOẶC nhận phiên bản mới nhất từ trang này .

Dán chromedriver.exetập tin vàoC:\Python27\Scripts thư mục .

Điều này sẽ làm việc ngay bây giờ:

from selenium import webdriver
driver = webdriver.Chrome()

23

Đối với cửa sổ, xin vui lòng chromedriver.exeđặt dưới<Install Dir>/Python27/Scripts/


và đặt Ubuntu ở đâu? int /usr/lib/hay ở nơi nào khác?
Gaurav Jain

Có tệp trong PATHkhông đủ, đặt nó vào /Scripts/nơi ride.pylàm việc.
Qwerty

1

Có 2 cách để chạy thử nghiệm trăn Selenium trong Google Chrome. Tôi đang xem xét Windows (Windows 10 trong trường hợp của tôi):

Điều kiện tiên quyết: Tải xuống Trình điều khiển Chrome mới nhất từ: https://sites.google.com/a/chromium.org/chromedriver/doads

Cách 1:

i) Trích xuất tệp zip đã tải xuống trong một thư mục / vị trí bạn chọn
ii) Đặt đường dẫn thực thi trong mã của bạn như sau:

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

Cách 2:

i) Chỉ cần dán chromedriver.exe bên dưới / Python / Sc scripts / (Trong trường hợp của tôi, thư mục là: C: \ Python36 \ Sc scripts)
ii) Bây giờ hãy viết mã đơn giản như dưới đây:

self.driver = webdriver.Chrome()

-1

Đối với IDE của Windows:

Nếu đường dẫn của bạn không hoạt động, bạn có thể thử thêm chromedriver.exedự án của mình, như trong cấu trúc dự án này.

chromedriver.exe

Sau đó, bạn nên tải chromedriver.exetrong tập tin chính của bạn. Đối với tôi, tôi tải driver.exetrong driver.py.

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

..có nghĩa là driver.py'sthư mục trên

.có nghĩa là thư mục nơi driver.pynằm

Hy vọng điều này sẽ hữu ích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.