Selenium sử dụng Python - Geckodriver thực thi cần phải có trong PATH


435

Tôi mới bắt đầu lập trình và bắt đầu với Pythonkhoảng 2 tháng trước và đang xem phần Tự động hóa các công cụ nhàm chán của Sweigart với văn bản Python . Tôi đang sử dụng IDLE và đã cài đặt mô-đun selen và trình duyệt Firefox. Bất cứ khi nào tôi cố gắng chạy chức năng webdo, tôi nhận được điều này:

from selenium import webdriver
browser = webdriver.Firefox()

Ngoại lệ :-

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. 

Tôi nghĩ rằng tôi cần phải thiết lập đường dẫn cho geckodrivernhưng không biết làm thế nào, vì vậy ai có thể cho tôi biết tôi sẽ làm điều này như thế nào không?


2
Xin vui lòng, xem câu trả lời của tôi về câu hỏi tương tự ở đây
Andrew

Tôi đang đặt geckodriver.exe trong thư mục Python / Python35 để nó có cùng đường dẫn và tôi còn gặp nhiều vấn đề hơn nữa.
tadm123

80
Trên máy Mac:brew install geckodriver
Hoài niệm.io

1
Tôi thấy rằng việc chạy nó thông qua trình duyệt Chrome nhanh hơn một chút so với trên Firefox, bạn sẽ phải tải xuống chromedrivercho việc này.
tadm123

Lưu ý: có Testcafe đã được mở nguồn gần đây. Nó không yêu cầu bất kỳ plugin trình duyệt nào, chúng được tích hợp sẵn. Tôi muốn sử dụng Selenium nhưng nó trông giống như một sự thay thế thú vị.
Ehvince

Câu trả lời:


354

selenium.common.exceptions.WebDriverException: Thông báo: nhu cầu thực thi của 'geckodriver' phải ở trong PATH.

Trước hết, bạn sẽ cần tải xuống con tắc kè thực thi mới nhất từ ​​đây để chạy firefox mới nhất bằng cách sử dụng selenium

Trên thực tế Các ràng buộc máy khách Selenium cố gắng xác định vị trí geckodriverthực thi từ hệ thống PATH. Bạn sẽ cần thêm thư mục chứa tệp thực thi vào đường dẫn hệ thống.

  • Trên các hệ thống Unix, bạn có thể thực hiện các thao tác sau để thêm nó vào đường dẫn tìm kiếm của hệ thống, nếu bạn đang sử dụng trình bao tương thích bash:

    export PATH=$PATH:/path/to/directory/of/executable/downloaded/in/previous/step
  • Trên Windows, bạn sẽ cần cập nhật biến hệ thống Đường dẫn để thêm đường dẫn thư mục đầy đủ vào con tắc kè thực thi bằng tay hoặc dòng lệnh (đừng quên khởi động lại hệ thống của bạn sau khi thêm con tắc kè thực thi vào hệ thống PATH để có hiệu lực) . Nguyên tắc giống như trên Unix.

Bây giờ bạn có thể chạy mã của mình giống như bạn đang làm như dưới đây: -

from selenium import webdriver

browser = webdriver.Firefox()

selenium.common.exceptions.WebDriverException: Thông báo: Vị trí nhị phân của trình duyệt dự kiến, nhưng không thể tìm thấy nhị phân ở vị trí mặc định, không có khả năng 'moz: firefoxOptions.binary' và không đặt cờ nhị phân trên dòng lệnh

Ngoại lệ nêu rõ bạn đã cài đặt firefox một số vị trí khác trong khi Selenium đang cố gắng tìm firefox và khởi chạy từ vị trí mặc định nhưng không thể tìm thấy. Bạn cần cung cấp rõ ràng vị trí nhị phân được cài đặt firefox để khởi chạy firefox như sau: -

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
Cảm ơn nhưng tôi đã đặt thư mục của tôi geckodriver.exevào C:\Python\Python35\seleniumthư mục và tôi đặt đường dẫn như bạn mô tả nhưng nó gây ra lỗi cho tôi dưới đây:
tadm123

4
Cảm ơn @Saurabh Bò tót, giờ nó đã hoạt động. Tôi đã thêm đường dẫn của Firefox vào các biến hệ thống theo cách thủ công và tất cả đều hoạt động. Mất một chút thời gian để khởi chạy nhưng tôi đoán đó là bình thường. Cảm ơn!
tadm123

3
Tôi đã gặp lỗi "WebDriverException: Message: Không thể khởi động trình duyệt: quyền bị từ chối" lúc đầu khi tôi bắt đầu chỉ định đường dẫn nhị phân firefox, nhưng khởi động lại máy tính (Windows 10) đã giải quyết vấn đề. - Chỉ trong trường hợp có ai khác gặp phải vấn đề tương tự như tôi.
NoSuchElephantException

3
Nhị phân là gì? Điều đó có nghĩa là thực thi?
Người dùng

12
Ngoài câu trả lời này, tôi muốn mở rộng về việc thiết lập PATHmôi trường unix. Bạn có thể đặt mã theo mã vì bạn không cần hệ thống rộng: os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/' Hoặc đơn giản là giữ nhị phân geckodriver trong thư mục đã có trong đường dẫn của bạn:mv geckodriver /usr/local/bin
dsalaj

159

Điều này đã giải quyết nó cho tôi.

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

Nếu bạn nhận được sự cho phép sai, hãy thử xóa [r '] khỏi đường dẫn chỉ "excecutable_path =' path \ to \ your'diretory '"
Darius

@adityaraw bạn đang dùng hệ điều hành nào?
Nesa

nhưng bây giờ tôi đang nhận được OSError thay vì cấp phép sai. Tôi bằng cách nào đó đã quản lý để sao chép geckodriver vào / usr / local / bin. nhưng bây giờ lỗi mới này đang giết chết tôi
aditya rawat

@adityarawat bạn có thể tải xuống geckodriver một cách độc lập từ đây: github.com/mozilla/geckodriver/release giải nén nó bằng tar và làm cho nó có thể thực thi được với chmod + x, nó không phải ở trong / usr / local / bin, bạn chỉ cần có để chỉ định đường dẫn của bạn đến đó
Nesa

chỉ để rõ ràng tôi đã tải xuống tệp arm7hf.tar và cũng giải nén nó và thêm nó vào đường dẫn bằng cách sử dụng lệnh export PATH=$PATH:geckodriver(nó được trích xuất trong Desktop). Nhưng nó cũng không giúp được gì. Tôi vẫn nhận được OSError [errno 8]
aditya rawat

121

bước này GIẢI QUYẾT cho tôi trên Ubuntu firefox 50.

  1. Tải xuống tắc kè

  2. Sao chép tắc kè trong / usr / local / bin

Bạn KHÔNG cần phải thêm

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

Trong mã của bạn, bạn không thể thêm biến khả năng
Andrea Perdicchia

Bạn có biết làm thế nào để thiết lập thư mục tải xuống cho Firefox không? Tôi đã thêm câu hỏi sau Đặt Tùy chọn Firefox . Bất kì sự trợ giúp nào đều được đánh giá cao.
d84_n1nj4

Trong Debian hoặc Ubuntu, bạn phải sử dụng lệnh apt để cài đặt Firefox. Đối với Windows Tôi không có ý tưởng xin lỗi
Andrea Perdicchia

Cảm ơn. Sau khi áp dụng câu trả lời này, tôi tiếp tục sử dụng giải pháp này để xử lý vấn đề tiếp theo: stackoverflow.com/questions/43713445/
Kẻ

Cảm ơn, Pycharm đã không tìm thấy con tắc kè mặc dù nó ở nhà và trong chính thư mục dự án, nhưng sau khi chuyển nó sang / usr / local / bin, nó đã hoạt động hoàn hảo
Ronald Das

32

Câu trả lời của @saurabh giải quyết vấn đề, nhưng không giải thích được tại sao Tự động hóa công cụ nhàm chán với Python không bao gồm các bước đó.

Điều này được gây ra bởi cuốn sách dựa trên selenium 2.x và trình điều khiển Firefox cho loạt bài đó không cần trình điều khiển tắc kè. Giao diện Gecko để điều khiển trình duyệt không khả dụng khi selen đang được phát triển.

Các phiên bản mới nhất trong loạt selen 2.x là 2.53.6 (xem ví dụ câu trả lời này , cho một cái nhìn dễ dàng hơn trong các phiên bản).

Các trang phiên bản 2.53.6 không đề cập đến con tắc kè ở tất cả. Nhưng kể từ phiên bản 3.0.2, tài liệu nói rõ rằng bạn cần cài đặt trình điều khiển tắc kè.

Nếu sau khi nâng cấp (hoặc cài đặt trên hệ thống mới), phần mềm của bạn đã hoạt động tốt trước đó (hoặc trên hệ thống cũ của bạn) không hoạt động nữa và bạn đang vội, hãy ghim phiên bản selenium trong virtualenv của bạn bằng cách thực hiện

pip install selenium==2.53.6

nhưng tất nhiên, giải pháp lâu dài cho sự phát triển là thiết lập một virtualenv mới với phiên bản selenium mới nhất, cài đặt trình điều khiển tắc kè và kiểm tra nếu mọi thứ vẫn hoạt động như mong đợi. Nhưng bản nâng cấp phiên bản chính có thể giới thiệu các thay đổi API khác không có trong sách của bạn, vì vậy bạn có thể muốn gắn bó với selen cũ hơn, cho đến khi bạn đủ tự tin rằng bạn có thể tự khắc phục bất kỳ sự khác biệt nào giữa API selenium2 và selenium3.


2
tôi ước đây là câu trả lời hàng đầu
sudo-nim

1
điều này đã giúp tôi, cảm ơn Anthon
ghost21blade

24

Trên macOS với Homebrew đã được cài đặt, bạn chỉ cần chạy lệnh Terminal

$ brew install geckodriver

Bởi vì homebrew đã mở rộng nên PATHkhông cần sửa đổi bất kỳ tập lệnh khởi động nào.


@roskakori Tôi đã làm điều này và nó đã được cài đặt thành công nhưng tôi vẫn nhận được cùng một lỗi
JKC

Điều này đã làm điều đó cho tôi, cảm ơn. Sử dụng Firefox 72.0.2 & Selenium 3.141.0
Sam

17

Để thiết lập tắc kè cho Selenium Python:

Nó cần đặt đường dẫn tắc kè với FirefoxDriver như mã dưới đây:

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

Tải xuống geckodriver cho hệ điều hành phù hợp của bạn (từ https://github.com/mozilla/geckodriver/release ) -> Trích xuất nó trong một thư mục bạn chọn -> Đặt đường dẫn chính xác như đã đề cập ở trên

Tôi đang sử dụng Python 3.6.2 và Selenium WebDriver 3.4.3 trong Windows 10.

Một cách khác để thiết lập tắc kè:

i) Chỉ cần dán geckodriver.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.Firefox()

17

Nếu bạn đang sử dụng Anaconda , tất cả những gì bạn phải làm là kích hoạt môi trường ảo của mình và sau đó cài đặt geckodriver bằng lệnh sau :

    conda install -c conda-forge geckodriver

Vâng, nó cài đặt tắc kè, nhưng lỗi pycharm vẫn giữ nguyên.
WebCome

Xin chào, tôi đã thử nhiều thứ và đó là điều duy nhất hiệu quả với tôi :-) cảm ơn bạn
tezzaaa

12

Ubuntu 18.04+ và bản phát hành mới nhất của tắc kè

Điều này cũng sẽ làm việc cho các giống * nix khác là tốt.

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/

Để cập nhật mac lên:

geckodriver-$GV-macos.tar.gz

12

Tôi thấy các cuộc thảo luận vẫn nói về cách thiết lập cũ của tắc kè bằng cách tải xuống tệp nhị phân và định cấu hình đường dẫn theo cách thủ công.

Điều này có thể được thực hiện tự động bằng cách sử dụng trình quản lý web

pip install webdriver-manager

Bây giờ mã ở trên trong câu hỏi sẽ hoạt động đơn giản với thay đổi bên dưới,

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

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

2
Điều này làm việc cho tôi. Cảm ơn!
igorkf

Safari hay thậm chí Internet Explorer có trình quản lý trình điều khiển tương tự không?
Mischief_Monkey

11

Cách dễ nhất cho các cửa sổ!
Tải về phiên bản mới nhất geckodrivertừ đây . Thêm tệp geckodriver.exe vào thư mục python (hoặc bất kỳ thư mục nào khác đã có PATH). Điều này sẽ giải quyết vấn đề (Đã thử nghiệm trên Windows 10)


Không phải là cửa sổ tồi tệ nhất. Cảm ơn giải pháp nhanh chóng.
AJ_

Đây là giải pháp đơn giản nhất !! Không cần phải khởi động lại máy tính của bạn!
olenscki

8

Các bước cho MAC:

Giải pháp đơn giản là tải xuống GeckoDriver và thêm nó vào hệ thống PATH của bạn. Bạn có thể sử dụng một trong hai cách tiếp cận:

Phương pháp ngắn:

1) Tải xuống và giải nén Geckodriver .

2) Đề cập đường dẫn trong khi khởi động trình điều khiển:

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

Phương pháp dài:

1) Tải xuống và giải nén Geckodriver .

2) Mở .bash_profile. Nếu bạn chưa tạo nó, bạn có thể sử dụng lệnh : touch ~/.bash_profile. Sau đó mở nó bằng cách sử dụng:open ~/.bash_profile

3) Xem xét tệp GeckoDriver có trong thư mục Tải xuống của bạn, bạn có thể thêm (các) dòng sau vào .bash_profiletệp:

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

Bằng cách này, bạn đang nối đường dẫn đến GeckoDriver vào Hệ thống của bạn. Điều này cho hệ thống biết GeckoDriver nằm ở đâu khi thực thi các tập lệnh Selenium của bạn.

4) Lưu .bash_profilevà buộc nó thực thi. Điều này tải các giá trị ngay lập tức mà không cần phải khởi động lại. Để làm điều này, bạn có thể chạy lệnh sau:

source ~/.bash_profile

5) Đó là nó. Bạn xong việc rồi!. Bạn có thể chạy tập lệnh Python ngay bây giờ.


1
Tôi đã có thể tải xuống geckodriverbằng Homebrew: brew install geckodrivervà sau đó khởi tạo Firefox thông qua:driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
Winterflags

7

Một số đầu vào / làm rõ bổ sung cho các độc giả tương lai của chủ đề này:

Các điều sau đây là độ phân giải cho Windows 7, Python 3.6, selenium 3.11:

Ghi chú của @ dsalaj trong chủ đề này sớm hơn cho Unix cũng có thể áp dụng cho Windows; mày mò với env PATH. biến ở cấp độ Windows và khởi động lại hệ thống Windows có thể tránh được.

(1) Tải xuống geckodriver (như được mô tả trong chủ đề này trước đó) và đặt geck ấn.exe (đã giải nén) tại X: \ Thư mục \ của \ your \ sự lựa chọn

(2) Mẫu mã Python:

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

Lưu ý: (1) Có thể mất khoảng 10 giây để đoạn mã trên mở trình duyệt Firefox cho url được chỉ định.
(2) Bảng điều khiển python sẽ hiển thị lỗi sau nếu không có máy chủ nào đang chạy ở url được chỉ định hoặc đang phục vụ một trang có tiêu đề chứa chuỗi 'Django': selenium.common.exceptions.WebDriverException: Thông báo: Trang lỗi : neterror? e = ConnectionFailure & u = http% 3A // localhost% 3A8000 / & c = UTF-8 & f = thường xuyên & d = Firefox% 20can% E2% 80% 9


Cảm ơn, tôi đã thử tất cả các giải pháp khác nhưng chỉ có giải pháp của bạn hoạt động trên Windows của tôi!
pso

4

Tôi thực sự đã phát hiện ra rằng bạn có thể sử dụng con tắc kè mới nhất mà không cần đưa nó vào đường dẫn hệ thống. Hiện tại tôi đang sử dụng

https://github.com/mozilla/geckodriver/release/doad/v0.12.0/geckodriver-v0.12.0-win64.zip

Firefox 50.1.0

Python 3.5.2

Selen 3.0.2

Windows 10

Tôi đang chạy VirtualEnv (mà tôi quản lý bằng PyCharm, tôi giả sử nó sử dụng Pip để cài đặt mọi thứ)

Trong đoạn mã sau, tôi có thể sử dụng một đường dẫn cụ thể cho con tắc kè bằng cách sử dụng tham số execable_path (Tôi phát hiện ra điều này bằng cách xem qua Lib \ site-gói \ selenium \ webdo \ firefox \ webdo.py). Lưu ý Tôi có một nghi ngờ rằng thứ tự của các đối số tham số khi gọi webdo là quan trọng, đó là lý do tại sao tệp thực thi_path cuối cùng trong mã của tôi (dòng thứ 2 ở ngoài cùng bên phải)

Bạn cũng có thể nhận thấy tôi sử dụng Hồ sơ firefox tùy chỉnh để khắc phục sự cố sec_error_unknown_issuer mà bạn sẽ gặp phải nếu trang web bạn đang kiểm tra có chứng chỉ không đáng tin cậy. xem Làm cách nào để tắt cảnh báo kết nối không đáng tin cậy của Firefox bằng Selenium?

Sau khi điều tra, người ta thấy rằng trình điều khiển Marionette chưa hoàn tất và vẫn đang được tiến hành, và không có số lượng nào để thiết lập các khả năng hoặc tùy chọn hồ sơ khác nhau để loại bỏ hoặc thiết lập chứng nhận sẽ hoạt động. Vì vậy, nó chỉ dễ dàng hơn để sử dụng một hồ sơ tùy chỉnh.

Dù sao đây là đoạn mã về cách tôi làm cho con tắc kè hoạt động mà không cần vào đường dẫn:

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

Tôi đã nhận SyntaxError: (lỗi unicode) 'codec unicodeescape' không thể giải mã byte ... Và tôi phải thay đổi đường dẫn tắc kè thành epath = r'C: \ Users \ step_ \ Documents \ mtg_buyer \ geckodrivers \ geckodriver.exe '. Có lẽ lý do là tôi đang sử dụng Windows 10 Trung Quốc?
Endle_Zhenbo

3

Tôi đang sử dụng Windows 10 và điều này làm việc cho tôi:

  1. Tải geckodriver từ đây . Tải xuống phiên bản phù hợp cho máy tính bạn đang sử dụng
  2. Giải nén tệp bạn vừa tải xuống và cắt / sao chép tệp ".exe" mà nó chứa
  3. Điều hướng đến C: {thư mục gốc python của bạn}. Của tôi là C: \ Python27. Dán tệp geckodriver.exe trong thư mục này.
  4. Khởi động lại môi trường phát triển của bạn.
  5. Hãy thử chạy lại mã, nó sẽ hoạt động ngay bây giờ.

Cảm ơn vì đã đề cập rằng bạn cần khởi động lại môi trường phát triển của mình.
Sâu

3

Xem xét việc cài đặt Firefox được đóng gói:

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

Kết nối bằng cách sử dụng 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

Thật đáng buồn khi không có cuốn sách nào được xuất bản trên Selenium / Python và hầu hết các ý kiến ​​về vấn đề này thông qua Google không giải thích rõ ràng logic đường dẫn để thiết lập điều này trên Mac (mọi thứ đều là Windows !!!!). Các youtubes đón tất cả vào "sau" bạn đã có thiết lập đường dẫn (trong suy nghĩ của tôi, lối thoát rẻ tiền!). Vì vậy, đối với những người dùng Mac tuyệt vời, hãy sử dụng cách sau để chỉnh sửa các tệp đường dẫn bash của bạn:

> $ touch ~ / .bash_profile; mở ~ / .bash_profile

Sau đó, thêm một đường dẫn giống như thế này .... * # Đặt PATH cho tắc kè PATH = khăn / usr / bin / geckodriver: $ {PATH} xuất khẩu PATH

Cài đặt PATH cho Selenium firefox

PATH = Hy ~ / Users / yourNamePATH / VEnvPythonInterpreter / lib / python2.7 / site-gói / selenium / webdo / firefox /: $ {PATH} xuất khẩu PATH

Đặt PATH để thực thi trên trình điều khiển firefox

PATH = Giảm / Người dùng / yournamePATH / VEnvPythonInterpreter / lib / python2.7 / site-gói / selenium / webdo / common / service.py: $ {PATH} xuất khẩu PATH *

Điều này làm việc cho tôi. Mối quan tâm của tôi là khi nào thì cộng đồng Selenium Windows sẽ bắt đầu chơi trò chơi thực sự và đưa người dùng Mac của chúng tôi vào thành viên câu lạc bộ kiêu ngạo của họ.


2

Selenium trả lời câu hỏi này trong MÔ TẢ.rst của họ

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.

Về cơ bản chỉ cần tải xuống con tắc kè, giải nén nó và di chuyển tệp thực thi vào thư mục / usr / bin của bạn


Trích dẫn này chứa các hướng làm việc trên linux mint 18.
Elliot Robert

2

Dành cho người dùng windows

sử dụng mã gốc như nó:

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

sau đó tải xuống trình điều khiển từ: mozilla / geckodriver

Đặt nó trong một đường dẫn cố định (vĩnh viễn) .. làm ví dụ, tôi đặt nó vào:

C: \ Python35

Sau đó, đi đến các biến môi trường của hệ thống, trong lưới "Biến hệ thống" tìm biến Biến và thêm:

; C: \ Python35 \ geckodriver

tắc kè, không phải geckodriver.exe .


tắc kè, không phải geckodriver.exe.
Saurabh Chandra Patel

1

Trên Raspberry Pi, tôi phải tạo từ trình điều khiển ARM và đặt đường dẫn tắc kè và đăng nhập vào:

sudo nano /usr/local/lib/python2.7/dist-packages/selenium/webdo/firefox/webdo.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

Nếu bạn sử dụng môi trường ảo và win10 (có thể là cho các hệ thống khác), bạn chỉ cần đặt geckodriver.exe vào thư mục sau trong thư mục môi trường ảo của bạn:

... \ my_virtual_env_directory \ Sc scripts \ geckodriver.exe


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

điều này sẽ giúp bạn có đường dẫn đến gekodriver.exe trên windows

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

0

Mac 10.12.1 python 2.7.10 này hoạt động với tôi :)

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

Tôi đang sử dụng Windows 10 và Anaconda2. Tôi đã thử thiết lập biến đường dẫn hệ thống nhưng không được. Sau đó, tôi chỉ cần thêm tệp geckodriver.exe vào thư mục Anaconda2 / Sc scripts và mọi thứ đều hoạt động tốt. Đối với tôi con đường là: -

C: \ Users \ Bhavya \ Anaconda2 \ Sc scripts


0

Nếu bạn muốn thêm đường dẫn trình điều khiển trên windows 10:

  1. Nhấp chuột phải vào biểu tượng "This PC" và chọn "Properties" nhập mô tả hình ảnh ở đây

  2. Nhấp chuột vào Cài đặt hệ thống nâng cao

  3. Nhấp chuột vào Môi trường Biến Biến ở phía dưới màn hình
  4. Trong phần Biến người dùng của người dùng khác, hãy nhấn mạnh phần Đường dẫn của người dùng và nhấn vào phần Chỉnh sửa
  5. Thêm đường dẫn vào các biến của bạn bằng cách nhấp vào Mới Mới và nhập vào đường dẫn cho trình điều khiển bạn đang thêm và nhấn enter.
  6. Sau khi nhập xong, hãy nhấp vào OK OK
  7. Tiếp tục nhấp vào OK OK cho đến khi bạn đóng tất cả các màn hình


0
  1. đảm bảo bạn có phiên bản chính xác của trình điều khiển (geckodriver), x86 hoặc 64.
  2. đảm bảo bạn đang kiểm tra đúng môi trường, ví dụ công việc đang chạy trong Docker, trong khi đó môi trường được kiểm tra là hệ điều hành máy chủ

0

Đối với tôi, chỉ cần cài đặt tắc kè trong cùng một môi trường là đủ:

$ brew install geckodriver

và mã không thay đổi:

from selenium import webdriver
browser = webdriver.Firefox()

0

Để thêm 5 xu của tôi, bạn cũng có thể làm echo PATH(Linux) và chỉ cần di chuyển tắc kè vào thư mục theo ý thích của bạn. Nếu thư mục hệ thống (không phải môi trường ảo) là mục tiêu, trình điều khiển sẽ có thể truy cập toàn cầu.

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.