一、安装
workon xxxx
pip install selenium
二、安装驱动
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --versionGoogle Chrome 138.0 .7204.93
sudo mv ~/Downloads/chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver
chromedriver --version
ChromeDriver 138.0 .7204.49 ( d2b48fd5f7813ed477a2d68fa232b8178fa4fb1e-refs/branch-heads/7204@{ #1814} )
三、打开使用,第一次打开加载很久
from selenium import webdriver
from selenium. webdriver. common. by import By
driver = webdriver. Chrome( )
driver. get( "https://www.baidu.com" )
title = driver. title
print ( driver. title) driver. quit( )
四、优化加载,提高打开速度
from selenium import webdriver
from selenium. webdriver. chrome. options import Optionsoptions = Options( )
options. add_argument( "--no-sandbox" )
options. add_argument( "--disable-dev-shm-usage" )
options. add_argument( "--disable-extensions" )
options. add_argument( "--disable-gpu" )
options. add_argument( "--window-size=1920,1080" )
options. add_argument( "--user-data-dir=/tmp/chrome-test-profile" )
driver = webdriver. Chrome( options= options)
五、获取页面请求数据
通过 Chrome DevTools 捕获网络请求(仅限 Chrome/Edge)
import json
from selenium import webdriver
from selenium. webdriver. common. by import By
from selenium. webdriver. chrome. service import Service
from selenium. webdriver. chrome. options import Options
chrome_options = Options( )
chrome_options. add_argument( "--enable-logging" )
chrome_options. add_argument( "--log-level=0" )
chrome_options. set_capability( "goog:loggingPrefs" , { "performance" : "ALL" } ) driver = webdriver. Chrome( options= chrome_options)
driver. execute_cdp_cmd( "Network.enable" , { } )
driver. get( "https://example.com" )
logs = driver. get_log( "performance" )
for log in logs: print ( log)
for log in logs: message = log. get( "message" , '{}' ) message = json. loads( message) [ 'message' ] method = messgae[ 'method' ] params = messgae[ 'params' ] if "Network.requestWillBeSent" in message: print ( "Request URL:" , message. get( "params" , { } ) . get( "request" , { } ) . get( "url" ) ) elif "Network.responseReceived" in message: print ( "Status Code:" , message. get( "params" , { } ) . get( "response" , { } ) . get( "status" ) )
driver. quit( )
六、常用命令
driver. forward( )
driver. back( )
driver. refresh( )
current_url = driver. current_url
title = driver. title
source = driver. page_source
driver. close( )
driver. quit( )
upload_element = driver. find_element( By. XPATH, "//input[@type='file']" )
upload_element. send_keys( "/path/to/file.txt" )
driver. get( "https://image.baidu.com/" )
driver. find_element( By. XPATH, '//*[@id="sttb"]/img[1]' ) . click( )
driver. find_element( By. ID, "stfile" ) . send_keys( "/path/to/image.png" )
current_window = driver. current_window_handle
all_windows = driver. window_handles
for window in all_windows: if window != current_window: driver. switch_to. window( window)
driver. execute_script( "window.open('');" )
driver. switch_to. window( current_window)
driver. set_window_size( 1024 , 768 )
driver. maximize_window( )
七、cookies管理
from selenium import webdriverdriver = webdriver. Chrome( )
driver. get( "https://example.com" )
all_cookies = driver. get_cookies( )
print ( all_cookies)
cookie = { 'name' : 'test_cookie' , 'value' : '12345' , 'domain' : 'example.com' , 'path' : '/' , 'secure' : True
} driver. add_cookie( cookie)
driver. delete_cookie( "cookie_name" )
driver. delete_all_cookies( )
driver. get( "https://example.com/login" )
cookies = driver. get_cookies( )
driver. quit( )
driver = webdriver. Chrome( )
driver. get( "https://example.com" )
for cookie in cookies: driver. add_cookie( cookie)
driver. refresh( )