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