13

Tôi đang cố gắng sử dụng phiên bản mới (2016) không đầu của Chromium với Selenium/ChromeDriver (Trước đây, tôi đã sử dụng Firefox với xfvb nhưng điều này hứa hẹn sẽ là tốt hơn nhiều).Selenium ChromeDriver không nhận dạng được Headless Chromium (Python) mới được biên soạn

tôi đã biên soạn một phiên bản không đầu của Chromium từ các nguồn (tôi không tìm thấy bất kỳ mã nhị phân được xây dựng trước) dựa trên hướng dẫn tôi tìm thấy here và sau đó tôi đã sử dụng đoạn mã sau để khởi động nó thông qua Selenium:

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) 

cùng mã làm việc với crom tiêu chuẩn (nếu tôi loại bỏ các binary.location tùy chọn)

Như là, tuy nhiên, tôi nhận được lỗi sau:

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) 

Rõ ràng, nhị phân crom không đầu được biên dịch bằng ID phiên bản mà ChromeDriver không nhận ra. Cứu giúp !!

Môi trường:

  • Compilation: Ubuntu 16,04 máy chủ
  • thực hiện Selenium: Linux Mint 18,1
+0

Kiểm tra phiên bản Chrome được hỗ trợ của trình điều khiển chrome của bạn. Tôi đọc nó hỗ trợ Chrome 54 đến 56 trong khi chrome không đầu của bạn là 59. Hãy thử cài đặt phiên bản chrome trước đây – BangTheBank

+3

Tôi không thể. Bởi vì các phiên bản trước 59 dường như không hỗ trợ chế độ không đầu. Tính năng này chỉ bắt đầu từ giữa năm 2016. Btw, làm cách nào để biết phiên bản Chrome Webdriver cụ thể hỗ trợ? – fi11222

+0

Ngoài ra, tôi đã kiểm tra trong Nguồn ChromeDriver. Có vẻ như không có phiên bản tối đa, chỉ có tối thiểu, bây giờ là 55. Vì vậy, vấn đề nằm ở nơi khác. – fi11222

Trả lời

11

ChromeHeadless được công nhận bởi chromedriver từ this patch (tạo ra sau khi bạn có đăng bài viết của bạn), mà chỉ khả dụng kể từ chromedriver 2.29 (phát hành vào tháng 4 năm 2017). Hãy chắc chắn rằng bạn có thực thi chromedriver này có sẵn trong PATH và Selenium đang chọn nó thay vì bất kỳ chromedriver khác mà bạn có thể có sẵn.

Ngoài ra, xin lưu ý rằng - theo headless Chrome documentation - bạn cần phải vượt qua hơn hai lá cờ:

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

Đối với mã nhị phân được xây dựng trước của Chrome không đầu - Tùy chọn có sẵn từ Chrome 57, vì vậy nó là được hỗ trợ bởi tất cả các phiên bản hiện được phân phối qua kho lưu trữ chính thức của Google (tức là Chrome 58 ổn định và Chrome 59 không ổn định). Đó là điểm nổi bật của Chrome 59, vì vậy, mong đợi một số cạnh thô cho đến khi tính năng được ổn định.

+1

Các tùy chọn bổ sung khiến Chrome trở nên không thể truy cập được, đối với tôi, các tùy chọn cần thiết duy nhất là 'options.add_argument ('không đầu')' và 'options.add_argument ('window-size = 1904x950')'. – tarikki

+1

Tôi đang sử dụng chromedriver 2,32 với các cờ được thêm vào nhưng tôi vẫn không thể làm việc không hiệu quả. –

+1

@SebastianL tôi nữa. Tôi nghi ngờ đó là bởi vì chúng tôi hiện đang sử dụng Chrome 60, nhưng chưa tìm ra một bản sửa lỗi nào. Bạn đã quản lý để sửa lỗi này? – goose

Các vấn đề liên quan