Selenium編寫用例的時候,需要不斷的運行調試debug,但正常情況會每次重新打開一個Chrome運行,是全新的瀏覽器,沒有任何歷史記錄和Cookie。如果你要完全運行所有測試用例,包括登陸,那這樣很好,如果你不想運行所有用例或是在調試,就很麻煩,下面介紹2個免登陸的方法。
方法一:通過加cookies免登陸
首先你要了解你的系統登陸后都會有哪些Cookie或session,這個最好不要猜不要自己試,直接問開發最對最直接。以百度為例,首先手動登陸,然后刷新頁面,看第一個請求的請求頭的Cookie,感覺如圖圈起來的比較像(這個也是我瞎猜的哈)。
輸入以下代碼運行:
from selenium import webdriver chrome_driver = r"D:\code\python\selenium_ui_auto\driver\chromedriver.exe" # 你driver的路徑 driver = webdriver.Chrome(chrome_driver) driver.get('http://www.baidu.com/') # 添加Cookie driver.add_cookie({'name': 'BAIDUID', 'value': '67F332038A56CC0A9B109'}) driver.add_cookie({'name': 'BIDUPSID', 'value': '67F332038A56CC0A9B109'}) driver.add_cookie({'name': 'H_PS_PSSID', 'value': '1423_3199_31428_31341_31270_31163_31472'}) driver.add_cookie({'name': 'BDUSS', 'value': 'hpRAAAAAAAAAAAAAAAAAAAAAAAJt4s16beLNefm'}) #再次打開頁面刷新Cookie driver.get('http://www.baidu.com/')
運行后,可以看到已經是登陸狀態了。
方法二:設置用戶數據目錄免登陸
正常每次運行Selenium打開Chrome,數據目錄都是臨時,退出后就清了。那我們可以設置一個用戶數據目錄,這樣以后selenium打開的Chrome,就跟我們正常使用打開的Chrome一樣,是有歷史數據的了。
from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument(r'--user-data-dir=D:\ChromeUserData') # 設置用戶文件夾,可免登陸 chrome_driver = r"D:\code\python\selenium_ui_auto\driver\chromedriver.exe" # 你driver的路徑 driver = webdriver.Chrome(chrome_driver, options=chrome_options)
通過以上代碼打開瀏覽器,我們先手動登陸一下,如果有記住密碼之類的就點選上。
關閉瀏覽器,再次運行以上代碼,就是已登陸的狀態了
注意,Cookie和Session都是有有效期的,所以一定時間后還是需要再次登陸的。
---------------------------------------------------------------------------------
關注微信公眾號(測試工程師小站)即可在手機上查閱,並可接收更多測試分享,發送【測試資料】更可獲取百G測試教程~

