環境
- python:3.6.2
- 系統:win10
- IDE:pycharm
- browser:chrome
- chromedriver:73.0.3683.68
- selenium 3.141.0
chromeOptions相關配置
chromeOptions 是一個配置 chrome 啟動是屬性的類。通過這個類,我們可以為chrome配置如下參數(這個部分可以通過selenium源碼看到):
1.設置 chrome 二進制文件位置 (binary_location)
2.添加啟動參數 (add_argument)
3.添加擴展應用 (add_extension, add_encoded_extension)
4.添加實驗性質的設置參數 (add_experimental_option)
5.設置調試器地址 (debugger_address)
模擬移動設備
# 通過設置user-agent,用來模擬移動設備 user_ag='MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; '+ 'CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
options.add_argument('user-agent=%s'%user_ag)
#option.add_argument('--user-agent=iphone')
禁止圖片加載
# 暫未測試 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.chrome.webdriver import Options from selenium.webdriver.chrome.webdriver import WebDriver chrome_option = Options() prefs = {"profile.managed_default_content_settings.images": 2} chrome_option .add_experimental_option("prefs", prefs) driver = WebDriver(options=chrome_option) chrome_wait = WebDriverWait(driver, 10) #或者使用下面的設置, 提升速度 chrome_option .add_argument('blink-settings=imagesEnabled=false')
添加代理
# 暫未測試 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.chrome.webdriver import Options from selenium.webdriver.chrome.webdriver import WebDriver # 靜態IP:102.23.1.105:2005 PROXY = "proxy_host:proxy:port" chrome_option = Options() desired_capabilities = chrome_option.to_capabilities() desired_capabilities['proxy'] = { "httpProxy": PROXY, "ftpProxy": PROXY, "sslProxy": PROXY, "noProxy": None, "proxyType": "MANUAL", "class": "org.openqa.selenium.Proxy", "autodetect": False } driver = webdriver.Chrome(desired_capabilities = desired_capabilities) driver = WebDriver(options=chrome_option) chrome_wait = WebDriverWait(driver, 10)
瀏覽器啟動時安裝crx擴展
# 暫未測試
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.chrome.webdriver import Options from selenium.webdriver.chrome.webdriver import WebDriver chrome_option = Options() chrome_option .add_extension('D:\\crx\\AdBlock_v2.17.crx') # 自己下載的crx路徑 driver = WebDriver(options=chrome_option) chrome_wait = WebDriverWait(driver, 10) driver.get(url)
加載所有Chrome配置
用Chrome地址欄輸入chrome://version/,查看自己的“個人資料路徑”,然后在瀏覽器啟動時,調用這個配置文件,代碼如下:
# 暫未測試 from selenium.webdriver.chrome.webdriver import Options from selenium.webdriver.chrome.webdriver import WebDriver chrome_option = Options() p=r'C:\Users\Administrator\AppData\Local\Google\Chrome\User Data' option.add_argument('--user-data-dir='+p) # 設置成用戶自己的數據目錄 driver = WebDriver(options=chrome_option)
攜帶Cookie
chrome_options = Options() chrome_options.add_argument("user-data-dir=selenium") driver = webdriver.Chrome(chrome_options=chrome_options) driver.get("http://www.baidu.com")
通過使用Chrome選項保持所有登錄在會話之間持久user-data-dir
其他
from selenium.webdriver.chrome.webdriver import Options options= Options() #谷歌無頭模式 options.add_argument('--headless') options.add_argument('--disable-gpu') # 谷歌文檔提到需要加上這個屬性來規避bug options.add_argument('disable-infobars') # 隱藏"Chrome正在受到自動軟件的控制" options.add_argument('lang=zh_CN.UTF-8') # 設置中文 options.add_argument('window-size=1920x3000') # 指定瀏覽器分辨率 options.add_argument('--hide-scrollbars') # 隱藏滾動條, 應對一些特殊頁面 options.add_argument('--remote-debugging-port=9222') options.binary_location = r'/Applications/Chrome' #手動指定使用的瀏覽器位置 # 更換頭部 user_agent = ( "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) " + "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36" ) options.add_argument('user-agent=%s'%user_agent) #設置圖片不加載 prefs = { 'profile.default_content_setting_values': { 'images': 2 } } options.add_experimental_option('prefs', prefs) #或者 使用下面的設置, 提升速度 options.add_argument('blink-settings=imagesEnabled=false') #設置代理 options.add_argument('proxy-server=' +'192.168.0.28:808') driver = webdriver.Chrome(chrome_options=options) #設置 cookie driver.delete_all_cookies()# 刪除所有的cookie driver.add_cookie({'name':'ABC','value':'DEF'})# 攜帶cookie打開 driver.get_cookies() # 通過 js 新打開一個窗口 driver.execute_script( "window.open("https://www.baidu.com");" ) # 通過 js 移動到最下 time.sleep(3) # 等待 頁面加載/Ajax數據返回 driver.execute_script( "var q=document.documentElement.scrollTop=10000" ) # 通過 js 返回所有html driver.execute_script( "return document.documentElement.outerHTML" )
chrome地址欄命令
about:version - 顯示當前版本 about:memory - 顯示本機瀏覽器內存使用狀況 about:plugins - 顯示已安裝插件 about:histograms - 顯示歷史記錄 about:dns - 顯示DNS狀態 about:cache - 顯示緩存頁面 about:gpu - 是否有硬件加速 about:flags - 開啟一些插件 //使用后彈出這么些東西:“請小心,這些實驗可能有風險”,看不懂也懶得改。
chrome://extensions/ - 查看已經安裝的擴展
chrome實用參數
–user-data-dir="[PATH]" - 指定用戶文件夾User Data路徑,可以把書簽這樣的用戶數據保存在系統分區以外的分區。 –disk-cache-dir="[PATH]" - 指定緩存Cache路徑 –disk-cache-size= - 指定Cache大小,單位Byte –first run - 重置到初始狀態,第一次運行 –incognito - 隱身模式啟動 –disable-javascript - 禁用Javascript –omnibox-popup-count="num" - 將地址欄彈出的提示菜單數量改為num個。我都改為15個了。 –user-agent="xxxxxxx" - 修改HTTP請求頭部的Agent字符串,可以通過about:version頁面查看修改效果 –disable-plugins - 禁止加載所有插件,可以增加速度。可以通過about:plugins頁面查看效果 –disable-javascript - 禁用JavaScript,如果覺得速度慢在加上這個 –disable-java - 禁用java –start-maximized - 啟動就最大化 –no-sandbox - 取消沙盒模式 –single-process - 單進程運行 –process-per-tab - 每個標簽使用單獨進程 –process-per-site - 每個站點使用單獨進程 –in-process-plugins - 插件不啟用單獨進程 –disable-popup-blocking - 禁用彈出攔截 –disable-plugins - 禁用插件 –disable-images - 禁用圖像 // 這個比較有用 –incognito - 啟動進入隱身模式 –enable-udd-profiles - 啟用賬戶切換菜單 –proxy-pac-url - 使用pac代理 [via 1/2] // 使用代理,也很有用 –lang=zh-CN - 設置語言為簡體中文 –disk-cache-dir - 自定義緩存目錄 // 可以結合內存盤來使用 –disk-cache-size - 自定義緩存最大值(單位byte) –media-cache-size - 自定義多媒體緩存最大值(單位byte) –bookmark-menu - 在工具 欄增加一個書簽按鈕 –enable-sync - 啟用書簽同步 –single-process - 單進程運行 Google Chrome
博客搬運地址: