自動化測試的時候為了避免每個case均需要登錄的操作,所以把登錄后的cookie信息保存下來,在有效期內使用cookie的方式實現登錄操作,為了避免展現太多的登錄操作,需要通過設置瀏覽器的option來改變是否可視化;
最早采用phantomjs方式來實現,但是在使用phantomjs時候提示瀏覽器已經自帶屬性,所以我們這里不需要再使用phantomjs來實現無界面操作,這個時候需要使用 options.set_headless(headless=True) 設置無界面;
options = webdriver.ChromeOptions()
options.set_headless() # 設置啟動無界面化
driver = webdriver.Chrome(chrome_options=options) # 啟動時添加定制的選項
此時通過 chrome_options 選項來添加定制的Chrome 來選項參數,但是此時一直提示“DeprecationWarning: use options instead of chrome_options warnings.warn('use options instead of chrome_options', DeprecationWarning)“ 根據錯誤提示閱讀了下源碼
if chrome_options: warnings.warn('use options instead of chrome_options', DeprecationWarning) options = chrome_options if options is None: # desired_capabilities stays as passed in if desired_capabilities is None: desired_capabilities = self.create_options().to_capabilities() else: if desired_capabilities is None: desired_capabilities = options.to_capabilities() else: desired_capabilities.update(options.to_capabilities())
根據源碼的提示發現使用chrome_options 時會將chrome_options 值傳給options,然后在給一個警告信息,根據錯誤信息已經源碼的注解了解到未來options會取代chrome_options,所以我們只需要chrome_options改成options即可,該問題應該在最近的版本更改的目前我這邊使用的是selenium==3.9.0,有興趣的可以去看下官方文檔,那個版本開始做的此項的修改。