Python自動化測試 之 DrissionPage 使用詳解
- 🏡前言:
- 一、??DrissionPage的基本概述
- 二、 🗺?環境安裝
- 2.1 ???運行環境
- 2.2 ???一鍵安裝
- 三、🗺?快速入門
- 3.1 頁面類
- 🛰?ChromiumPage
- 🛫 SessionPage
- 🔎WebPage
- 3.2 🌏 準備工作
- 3.2.1 嘗試啟動瀏覽器
- 3.2.2 設置瀏覽器驅動路徑
- 3.2.3 🌏?控制瀏覽器
- 3.3 收發數據包
- 3.4 模式切換
- 四、🗺?ChromiumPage詳解
- 4.1 啟動和接管瀏覽器
- 4.1.1 啟動瀏覽器
- 4.1.2 接管瀏覽器
- 4.1.3 多瀏覽器共存
- 4.2 頁面交互
- 4.3 查找元素
- 4.4 獲取元素信息的常用屬性或方法
- 五、🗺?SessionPage詳解
- 5.1 get請求
- 5.2 post請求
- 5.3 page對象常用屬性
- 六、🗺?WebPage詳解
- 擴展
- ?下載文件
- 🥬設置 cookies
- ? 常見問題
🏡前言:
之前分享過一篇關于 自動化測試框架 Selenium 使用的文章: Python自動化測試 環境搭建 Selenium、WebDriver下載、安裝、配置、基本使用詳解,雖然 Selenium也很強大,但在使用下來后,感覺DrissionPage操作更簡單、功能更強大一些(不像Selenium 會擔心WebDriver版本對不上無法運行等情況),尤其是對新手入門來講,DrissionPage是非常值得推薦學習的。
一、??DrissionPage的基本概述
DrissionPage 是一個基于 python 的網頁自動化工具。它既能控制瀏覽器,也能像requests一樣收發數據包,更重要的是還能把兩者合二為一。因此,簡單來說DrissionPage可兼顧瀏覽器自動化的便利性和 requests 的高效率。
DrissionPage功能強大,內置無數人性化設計和便捷功能。并且它的語法簡潔而優雅,代碼量少,對新手友好。
🚀官網:https://drissionpage.cn/
📚文檔:https://drissionpage.cn/browser_control/intro
💖 特性:
??? 強大的自研內核
- 不依賴 webdriver
- 無需為不同版本的瀏覽器下載不同的驅動
- 運行速度更快
- 可以跨 iframe 查找元素,無需切入切出
- 可同時操作多個標簽頁,無需切換
- 方便好用的數據包監聽功能
- 可處理非open狀態的 shadow-root
??? 極簡的定位語法
- 制定了一套簡潔高效的查找元素語法,支持鏈式操作,支持相對定位。
- 每次查找內置等待,可以獨立設置每次查找超時時間。
??? 更多便捷的功能
- 可對整個網頁截圖,包括視口外的部分
- 每次運行程序可以反復使用已經打開的瀏覽器,無需每次從頭運行
- s 模式訪問網頁時會自動糾正編碼,無需手動設置
- s 模式在連接時會自動根據當前域名自動填寫Host和Referer屬性
- 下載工具支持多種方式處理文件名沖突、自動創建目標路徑、斷鏈重試等
- 支持直接獲取after和before偽元素的內容
- 上傳文件可直接攔截文件選擇框并輸入路徑,無需依靠 GUI 或查找元素輸入
二、 🗺?環境安裝
2.1 ???運行環境
操作系統:Windows、Linux 或 Mac。
python 版本:3.6 及以上
支持瀏覽器:Chromium 內核(如 Chrome 和 Edge)
2.2 ???一鍵安裝
使用 pip 安裝 DrissionPage:
# 安裝最新版本
pip install DrissionPage# 如果已安裝,可以在命令后面加上 --upgrade 參數 升級到最新版本
pip install DrissionPage --upgrade# 指定版本升級
pip install DrissionPage==4.0.0b17
三、🗺?快速入門
3.1 頁面類
在DrissionPage框架中,有一個非常重要的工具叫做“頁面類”,主要用于控制瀏覽器 和 收發數據包。DrissionPage 包含三種主要頁面類。我們可以根據自己的需要選擇使用。
🛰?ChromiumPage
如果只要控制瀏覽器,導入ChromiumPage
。
from DrissionPage import ChromiumPage
🛫 SessionPage
如果只要收發數據包,導入SessionPage
。
from DrissionPage import SessionPage
🔎WebPage
WebPage
是功能最全面的頁面類,既可控制瀏覽器,也可收發數據包。
from DrissionPage import WebPage
3.2 🌏 準備工作
如果只使用收發數據包功能,無需任何準備工作。
如果要控制瀏覽器,需設置瀏覽器路徑。程序默認設置控制 Chrome,所以下面用 Chrome 演示。
開始前,我們先設置一下瀏覽器路徑。
程序默認控制 Chrome,所以下面用 Chrome 演示。 如果要使用 Edge 或其它 Chromium 內核瀏覽器,設置方法是一樣的。
3.2.1 嘗試啟動瀏覽器
默認狀態下,程序會自動在系統內查找 Chrome 路徑。
執行以下代碼,瀏覽器啟動并且訪問了相關網站,如果訪問執行成功說明可直接使用,跳過后面的步驟即可。
from DrissionPage import ChromiumPagepage = ChromiumPage()
page.get('https://www.baidu.com')
3.2.2 設置瀏覽器驅動路徑
如果上面的步驟提示出錯,說明程序沒在系統里找到 Chrome 瀏覽器。
可用以下其中一種方法設置,設置會持久化記錄到默認配置文件,之后程序會使用該設置啟動。
-
📌方法1:
-
新建一個臨時 py 文件,并輸入以下代碼,填入您電腦里的 Chrome 瀏覽器可執行文件路徑,然后運行。
from DrissionPage import ChromiumOptionspath = r'D:\Chrome\Chrome.exe' # 請改為你電腦內Chrome可執行文件路徑 ChromiumOptions().set_browser_path(path).save()
這段代碼會把瀏覽器路徑記錄到配置文件,今后啟動瀏覽器皆以新路徑為準。
另外,如果是想臨時切換瀏覽器路徑以嘗試運行和操作是否正常,可以去掉.save()
,以如下方式結合第1??步的代碼。from DrissionPage import ChromiumPage, ChromiumOptionspath = r'C:\Users\Administrator\AppData\Local\Google\Chrome SxS\Application\chrome.exe' # 請改為你電腦內Chrome可執行文件路徑 co = ChromiumOptions().set_browser_path(path) page = ChromiumPage(co) page.get('http://DrissionPage.cn')
-
-
📌方法2:
-
在命令行輸入以下命令(路徑改成自己電腦里的):
dp -p C:\Users\Administrator\AppData\Local\Google\Chrome SxS\Application\chrome.exe
??注意命令行的 python 環境與項目應是同一個
??注意要先使用 cd 命令定位到項目路徑
-
現在,請重新執行第1??步的代碼,如果正確訪問了目標網址,說明已經設置完成。
from DrissionPage import ChromiumPagepage = ChromiumPage()
page.get('https://www.baidu.com')
??? OK,當您完成以上準備工作以后,無需關閉瀏覽器,后面的上手示例可繼續接管當前瀏覽器。
3.2.3 🌏?控制瀏覽器
現在,我們通過一些例子,來直觀感受一下 DrissionPage 的工作方式。
本示例演示使用ChromiumPage
控制瀏覽器登錄 gitee 網站。
from DrissionPage import ChromiumPage# 創建頁面對象,并啟動瀏覽器
page = ChromiumPage()
# 跳轉到登錄頁面
page.get('https://gitee.com/login')# 定位到賬號文本框,獲取文本框元素
ele = page.ele('#user_login')
# 輸入對文本框輸入賬號
ele.input('你的賬號')
# 定位到密碼文本框并輸入密碼
page.ele('#user_password').input('你的密碼')
# 點擊登錄按鈕:@attrName=value,這是根據屬性和屬性值進行標簽定位的方式
page.ele('@value=登 錄').click()
注意:
ele()
方法用于查找元素,它返回一個ChromiumElement
對象,用于操作元素。值得一提的是,ele()
內置了等待,如果元素未加載,它會執行等待,直到元素出現或到達時限。默認超時時間 10 秒。
3.3 收發數據包
本示例演示用
SessionPage
已收發數據包的方式采集 gitee 網站數據。這個示例的目標,要獲取所有庫的名稱和鏈接,為避免對網站造成壓力,我們只采集 3 頁。網址:https://gitee.com/explore/all
from DrissionPage import SessionPage# 創建頁面/請求對象
page = SessionPage()# 爬取3頁
for i in range(1, 4):# 訪問某一頁的網頁page.get(f'https://gitee.com/explore/all?page={i}')# 獲取所有開源庫<a>元素列表(所有庫的鏈接的a標簽的class屬性值都是一樣的)links = page.eles('.title project-namespace-path')# 遍歷所有<a>元素for link in links:# 打印鏈接信息:print(link.text, link.link)
.text
獲取元素的文本,.link
獲取元素的href
或src
屬性。
3.4 模式切換
這個示例演示
WebPage
如何切換控制瀏覽器和收發數據包兩種模式。
通常,切換模式是用來應付登錄檢查很嚴格的網站,可以用控制瀏覽器的形式處理登錄,再轉換模式用收發數據包的形式來采集數據。
實例:基于瀏覽器控制模式進行gitee的登陸,登錄成功后切換模式基于收發數據包的性質訪問該賬戶的個人主頁,獲取該賬戶主頁左下角所有的組織名稱。
from DrissionPage import ChromiumOptions
from DrissionPage import WebPage# 創建頁面對象
page = WebPage()
# 訪問網址,進行登錄
page.get('https://gitee.com/login?redirect_to_url=%2F')
# 定位到賬號文本框,獲取文本框元素
ele = page.ele('#user_login')
# 輸入對文本框輸入賬號
ele.input('你的賬號')
# 定位到密碼文本框并輸入密碼
page.ele('#user_password').input('你的密碼')
# 點擊登錄按鈕:@attrName=value,這是根據屬性和屬性值進行標簽定位的方式
page.ele('@value=登 錄').click()# 切換到收發數據包模式
page.change_mode() #切換的時候程序會在新模式重新訪問當前 url。
#切換模式后,重新訪問基于登錄狀態后新的url(個人主頁)
page.get('https://gitee.com/muguilin')# 根據class屬性值獲取div標簽,然后將該div下面class為item的元素標簽批量獲取
items = page.ele('.ui middle aligned list').eles('.item')
# 遍歷獲取到的元素
for item in items:# 打印元素文本print(item('.content').text)
四、🗺?ChromiumPage詳解
顧名思義,
ChromiumPage
是 Chromium 內核瀏覽器的頁面,使用它,我們可與網頁進行交互,如調整窗口大小、滾動頁面、操作彈出框等等。還可以跟頁面中的元素進行交互,如輸入文字、點擊按鈕、選擇下拉菜單、在頁面或元素上運行 JavaScript 代碼等等。
可以說,操控瀏覽器的絕大部分操作,都可以由
ChromiumPage
及其衍生的對象完成,而它們的功能,還在不斷增加。除了與頁面和元素的交互,ChromiumPage
還扮演著瀏覽器控制器的角色,可以說,一個ChromiumPage
對象,就是一個瀏覽器。
4.1 啟動和接管瀏覽器
用
ChromiumPage()
創建頁面對象。根據不同的配置,可以接管已打開的瀏覽器,也可以啟動新的瀏覽器。程序結束時,被打開的瀏覽器不會主動關閉,以便下次運行程序時使用(由 VSCode 啟動的會被關閉)。
4.1.1 啟動瀏覽器
這種方式代碼最簡潔,程序會使用默認配置,自動生成頁面對象。創建
ChromiumPage
對象時會在指定端口啟動瀏覽器。默認情況下,程序使用 9222 端口。
from DrissionPage import ChromiumPagepage = ChromiumPage()
指定端口啟動瀏覽器:
# 啟動9333端口的瀏覽器,如該端口空閑,啟動一個瀏覽器
page = ChromiumPage(9333)
4.1.2 接管瀏覽器
當頁面對象創建時,只要指定的端口port已有瀏覽器在運行,就會直接接管。無論瀏覽器是哪種方式啟動的。比如:先通過如下代碼啟動一個端口為8888的瀏覽器
from DrissionPage import ChromiumPagepage = ChromiumPage(666)
在啟動的端口為8888的瀏覽器中,手動訪問百度頁面,然后使用如下程序測試是否可以接管該瀏覽器:
from DrissionPage import ChromiumPagepage = ChromiumPage(666)
#打印接管瀏覽器的page標題和訪問的url
print(page.title,page.url)
4.1.3 多瀏覽器共存
如果想要同時操作多個瀏覽器,或者自己在使用其中一個上網,同時控制另外幾個瀏覽器跑自動化,就需要給這些被程序控制的瀏覽器設置單獨的端口和用戶文件夾,否則會造成沖突。
from DrissionPage import ChromiumPage, ChromiumOptions# 創建多個配置對象,每個指定不同的端口號和用戶文件夾路徑
do1 = ChromiumOptions().set_paths(local_port=9111, user_data_path=r'D:\data1')
do2 = ChromiumOptions().set_paths(local_port=9222, user_data_path=r'D:\data2')# 創建多個頁面對象
page1 = ChromiumPage(addr_or_opts=do1)
page2 = ChromiumPage(addr_or_opts=do2)# 每個頁面對象控制一個瀏覽器
page1.get('https://www.baidu.com')
page2.get('http://www.163.com')
4.2 頁面交互
-
get():該方法用于跳轉到一個網址。當連接失敗時,程序會進行重試。
page.get('https://www.baidu.com')
-
back():此方法用于在瀏覽歷史中后退若干步。
page.back(2) # 后退兩個網頁
-
forward():此方法用于在瀏覽歷史中前進若干步。
page.forward(2) # 前進兩步
-
refresh():此方法用于刷新當前頁面。
page.refresh() # 刷新頁面
-
run_js():此方法用于執行 js 腳本。
# 用傳入參數的方式執行 js 腳本顯示彈出框顯示 Hello world! #參數1:執行的js腳本。參數2:*args表示給js腳本傳遞的參數 page.run_js('alert(arguments[0]+arguments[1]);', 'Hello', ' world!')
-
run_js_loaded():此方法用于運行 js 腳本,執行前等待頁面加載完畢。
page.run_js_loaded('alert(arguments[0]+arguments[1]);', 'Hello', ' world!')
-
scroll.to_bottom():此方法用于滾動頁面到底部,水平位置不變。
page.scroll.to_bottom()
4.3 查找元素
本節介紹 DrissionPage 自創的查找元素語法。
查找語法能用于指明以哪種方式去查找指定元素,定位語法簡潔明了,熟練使用可大幅提高程序可讀性。
🔦 更多頁面或元素內查找:https://drissionpage.cn/browser_control/get_elements/find_in_object
以下使用這個頁面進行講解test.html(可以在pycharm中使用chrome打開該頁面獲取頁面鏈接):
<html>
<body>
<div id="one"><p class="p_cls" id="row1" data="a">第一行</p><p class="p_cls" id="row2" data="b">第二行</p><p class="p_cls">第三行</p>
</div>
<div id="two">第二個div
</div>
</body>
</html>
基本定位語法:注意下面的ele和eles
page.ele:只能定位滿足要求第一次出現的標簽
page.eles:定位到滿足要求所有的標簽
from DrissionPage import ChromiumPagepage = ChromiumPage()
page.get('http://localhost:63342/Code/test.html?_ijt=chuqtur5cikh95asobefg123mf')
#id屬性定位
tag1 = page.ele('@id=one') # 獲取第一個id為one的元素#文本定位
tag2 = page.ele('@text()=第一行') # 獲取第一個文本為“第一行”的元素#當需要多個條件同時確定一個元素時,每個屬性用'@@'開頭。
tag3 = page.ele('@@class=p_cls@@text()=第三行') # 查找class為p_cls且文本為“第三行”的元素#當需要以或關系條件查找元素時,每個屬性用'@|'開頭。
tag4 = page.eles('@|id=row1@|id=row2') # 查找所有id為row1或id為row2的元素#表示模糊匹配,匹配含有指定字符串的文本或屬性。
tag5 = page.eles('@id:ow') # 獲取id屬性包含'ow'的元素#表示匹配開頭,匹配開頭為指定字符串的文本或屬性。
tag6 = page.eles('@id^row') # 獲取id屬性以'row'開頭的元素#表示匹配結尾,匹配結尾為指定字符串的文本或屬性。
tag7 = page.ele('@id$w1') # 獲取id屬性以'w1'結尾的元素print(tag7)
選擇器定位語法
id選擇器定位:
ele1 = page.ele('#one') # 查找id為one的元素
ele2 = page.ele('#=one') # 和上面一行一致
ele3 = page.ele('#:ne') # 查找id屬性包含ne的元素
ele4 = page.ele('#^on') # 查找id屬性以on開頭的元素
ele5 = page.ele('#$ne') # 查找id屬性以ne結尾的元素
class選擇器定位:
e1 = page.ele('.p_cls') # 查找class屬性為p_cls的元素
e2 = page.ele('.=p_cls') # 與上一行一致
e3 = page.ele('.:_cls') # 查找class屬性包含_cls的元素
e4 = page.ele('.^p_') # 查找class屬性以p_開頭的元素
e5 = page.ele('.$_cls') # 查找class屬性以_cls結尾的元素
文本選擇器定位:
element1 = page.ele('text=第二行') # 查找文本為“第二行”的元素
element2 = page.ele('text:第二') # 查找文本包含“第二”的元素
element3 = page.ele('第二') # 與上一行一致
標簽選擇器定位:
ele1 = page.ele('tag:div') # 查找第一個div元素
ele2 = page.ele('tag:p@class=p_cls') # 與單屬性查找配合使用
ele3 = page.ele('tag:p@@class=p_cls@@text()=第二行') # 與多屬性查找配合使用
xpath定位:
eles = page.eles('xpath://div/p[@id="row1"]')
🚀查看更多語法:https://drissionpage.cn/browser_control/get_elements/sheet
4.4 獲取元素信息的常用屬性或方法
屬性或方法 | 說明 |
---|---|
html | 此屬性返回元素的 HTML 文本(不包括<iframe> 內容) |
inner_html | 此屬性返回元素內部的 HTML 文本 |
tag | 此屬性返回元素的標簽名 |
text | 此屬性返回元素內所有文本組合成的字符串 |
texts() | 此方法返回元素內所有直接子節點的文本(列表) |
attrs | 此屬性以字典形式返回元素所有屬性及值 |
attr('attrName') | 此方法返回元素某個 attribute 屬性值 |
link | 此方法返回元素的 href 屬性或 src 屬性 |
xpath | 此屬性返回當前元素在頁面中 xpath 的絕對路徑 |
元素列表中批量獲取信息
eles()
等返回的元素列表,自帶get
屬性,可用于獲取指定信息。
from DrissionPage import SessionPagepage = SessionPage()
page.get('https://www.baidu.com')
eles = page.ele('#s-top-left').eles('t:a')
print(eles.get.texts()) # 獲取所有元素的文本
print(eles.get.links()) # 獲取所有元素的鏈接
print(eles.get.attrs("class")) # 獲取所有元素的指定屬性值
五、🗺?SessionPage詳解
顧名思義,
SessionPage
是一個使用Session
(requests 庫)對象的頁面,且它還封裝了網絡連接和 html 解析功能,使收發數據包也可以像操作頁面一樣便利。
并且,由于加入了本庫獨創的查找元素方法,使數據的采集便利性遠超 requests + beautifulsoup 等組合。
🚀了解更多:https://drissionpage.cn/SessionPage/intro
獲取 gitee 推薦項目第一頁所有項目。
# 導入
from DrissionPage import SessionPage
# 創建頁面對象
page = SessionPage()
# 訪問網頁
page.get('https://gitee.com/explore/all')
# 在頁面中查找元素
items = page.eles('tag:h3')
# 遍歷元素
for item in items[:-1]:# 獲取當前<h3>元素下的<a>元素lnk = item('tag:a')# 打印<a>元素文本和href屬性print(lnk.text, lnk.link)
5.1 get請求
get()
方法語法與 requests 的get()
方法一致,在此基礎上增加了連接失敗重試功能。與 requests 不一樣的是,它不返回Response
對象,而是返回一個bool值,表示請求是否成功。
示例:請求51游戲指定關鍵字對應的搜索結果頁面
from DrissionPage import SessionPagepage = SessionPage()
url = 'https://game.51.com/search/action/game/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'}
cookies = {'name': 'value'}
# proxies = {'http': '127.0.0.1:1080', 'https': '127.0.0.1:1080'}
param = {"q":'傳奇'}
page.get(url, headers=headers, cookies=cookies,params=param,proxies=None)
print(page.html,page.title)
其他參數:
5.2 post請求
請求:中國人事考試網—站內搜索:http://www.cpta.com.cn/category/search.html
from DrissionPage import SessionPagepage = SessionPage()
url = 'http://www.cpta.com.cn/category/search'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'}
cookies = {'name': 'value'}
# proxies = {'http': '127.0.0.1:1080', 'https': '127.0.0.1:1080'}
data = {"keywords":'財務','搜索':'搜索'}
page.post(url, headers=headers, cookies=cookies,data=data,proxies=None)
print(page.html,page.title)
注意:在get和post請求中,headers中的User-Agent可以不寫,因為SessionPage和WebPage在創建頁面對象時會自動加載一個ini的配置文件,該配置文件中已經存在了User-Agent。
ini 文件初始內容如下:
......
[session_options]
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8', 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'connection': 'keep-alive', 'accept-charset': 'GB2312,utf-8;q=0.7,*;q=0.7'}[timeouts]
base = 10
page_load = 30
script = 30[proxies]
http =
https = [others]
retry_times = 3
retry_interval = 2
5.3 page對象常用屬性
url:此屬性返回當前訪問的 url。
title:此屬性返回當前頁面title文本。
raw_data:此屬性返回訪問到的二進制數據,即Response對象的content屬性。
html:此屬性返回當前頁面 html 文本。
json:此屬性把返回內容解析成 json。比如請求接口時,若返回內容是 json 格式,用html屬性獲取的話會得到一個字符串,用此屬性獲取可將其解析成dict。
六、🗺?WebPage詳解
WebPage覆蓋了ChromiumPage所有功能,并且增加了切換模式功能,創建的標簽頁對象為MixTab。
from DrissionPage import WebPagepage = WebPage()page.get('https://gitee.com/login')# 定位到賬號文本框,獲取文本框元素
ele = page.ele('#user_login')# 輸入對文本框輸入賬號
ele.input('你的賬號')# 定位到密碼文本框并輸入密碼
page.ele('#user_password').input('你的密碼')# 點擊登錄按鈕
page.ele('@value=登 錄').click()"""
登錄成功后,就可以進行相應的請求發送了
"""
# 模式切換 https://drissionpage.cn/get_start/examples/switch_mode
page.change_mode()# 獲取個人主頁的推薦項目
self_page = 'https://gitee.com/muguilin'
page.get(self_page)# 獲取所有行元素
items = page.ele('#popular-pinned-projects').eles('.ui card fluid')
# 遍歷獲取到的元素
for item in items:# 打印元素文本# print(item('t:h3').text)print(item('.content').text)print()
擴展
?下載文件
DrissionPage 帶一個簡便易用的下載器,一行即可實現下載功能。
from DrissionPage import SessionPageurl = 'https://www.baidu.com/img/flexible/logo/pc/result.png'
save_path = r'C:\download'page = SessionPage()
page.download(url, save_path)
🥬設置 cookies
🥦 設置 cookieshttps://drissionpage.cn/tutorials/functions/set_cookies
頁面對象中設置
任意頁面對象都有set.cookies()方法,用于設置 cookies。
該方法接收多種格式的 cookies 信息,可設置一個或多個 cookies。
使用瀏覽器時,任意頁面對象設置的 cookies 是所有標簽頁共用的(由new_tab(new_context=True)創建的標簽頁除外)。
示例:
from DrissionPage import Chromiumtab = Chromium().latest_tab
cookies = 'name1=value1; name2=value2; path=/; domain=.example.com;'tab.set.cookies(cookies)
刪除 cookies
頁面對象用set.cookies.remove()和set.cookies.clear()刪除和清空 cookies。
SessionOptions對象用set_cookies(None)清空 cookies。
具體用法詳見使用文檔有關章節。
? 常見問題
? 如何禁用保存密碼、恢復頁面等提示氣泡?
瀏覽器提示氣泡出現時可以手動關閉,不關閉也不影響自動操作,在代碼中阻止其顯示也是可以的。 加一些瀏覽器配置代碼即可禁止相應的氣泡顯示,需要添加下面這樣的代碼:
co = ChromiumOptions()# 阻止“自動保存密碼”的提示氣泡
co.set_pref('credentials_enable_service', False)# 阻止“要恢復頁面嗎?Chrome未正確關閉”的提示氣泡
co.set_argument('--hide-crash-restore-bubble')
? 如何使用啟動參數、用戶配置、實驗項等功能?
arguments 啟動參數
-
使用參考:http://DrissionPage.cn/ChromiumPage/browser_opt#-set_argument
-
參數詳見:https://peter.sh/experiments/chromium-command-line-switches/
prefs 用戶配置 -
使用參考:http://DrissionPage.cn/ChromiumPage/browser_opt#-set_pref
-
參數詳見:https://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/pref_names.cc
flags 實驗項 -
使用參考:http://DrissionPage.cn/ChromiumPage/browser_opt#-set_flag
-
參數詳見:chrome://flags
🚀更多常見問題https://drissionpage.cn/tutorials/QandA