1. 程式人生 > >(轉載)Selenium + Chrome headless 報ERROR:gpu_process_transport_factory.cc(1007)]

(轉載)Selenium + Chrome headless 報ERROR:gpu_process_transport_factory.cc(1007)]

Selenium不再推薦使用PhantomJS,會報如下警告

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '

於是從PhantomJS轉移到Chrome,使用headless versions of Chrome時,首先要安裝Chrome,然後下載chromedriver,再把chromedriver的地址配置到系統環境變數path中,方便呼叫。如果不把chromedriver的地址配置到系統環境變數的話,也可以在使用時指定chromedriver的地址。

注意Chrome和chromedriver有版本對應的要求,系統中安裝了某一版本的chrome要使用對應版本的chromedriver,其實下載最新版本的Chrome和chromedriver就行了,一般都是對應的。

Chrome下載地址:https://chrome.en.softonic.com/

chromedriver下載地址:http://npm.taobao.org/mirrors/chromedriver/

 

不過在使用過程中,還是不如PhantomJS順手,在windows環境下,chrome還有點問題。比如啟動chromedriver的時候,會報個錯。

複製程式碼
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# webdriver.Chrome函式裡有個引數executable_path,預設值是'chromedriver.exe',會搜尋系統path變更,也可以修改該值,使用其他路徑
# driver = webdriver.Chrome(executable_path=my_driver_path,chrome_options=chrome_options) driver = webdriver.Chrome(chrome_options=chrome_options) driver.get("https://www.baidu.com/")
複製程式碼

[0917/002914.533:ERROR:gpu_process_transport_factory.cc(1007)] Lost UI shared context.

雖然最終沒有影響程式執行,但還是費了很大勁去查了一下,原因是在windows系統中Chrome無頭模式下,其中的SwiftShader軟體會觸發斷言失敗,但實際上不影響程式執行,可以忽略該錯誤。

https://stackoverflow.com/questions/50143413/errorgpu-process-transport-factory-cc1007-lost-ui-shared-context-while-ini