mfc 添加 excel类给定关键字不在字典中_pyppeteer最为核心类Page的接口方法
Page類是pyppeteer的核心,其價值就猶如selenium的driver,具體的頁面操作都在Page類上;Page與driver比較最具優勢的是和js的交互,可以修改本地js、css,也可以給頁面添加js函數,甚至添加自定義函數到瀏覽器的windows屬性中,也有js攔截相關的設置,更有終端模擬設置,這些功能是比driver更為強大的功能,但是也有一些劣勢如頁面超時方面比driver弱、選擇器不簡潔等問題。
頁面類:Page 基類:pyee.EventEmitter
此類提供了與單個chrome選項卡進行交互的方法。一個 Browser對象可能有多個Page對象。
- 選擇器
Page類選擇器相關方法有5個,并且這五個都有別名,分別是:
J()別名querySelector()
JJ()別名querySelectorAll()
JJeval()別名querySelectorAllEval()
Jeval()別名querySelectorEval()
Jx()別名xpath()
協程函數 querySelector(selector:str)
獲取匹配的元素的selector
參數:搜索元素的選擇器字符串。
返回[ElementHandle]或者None。
協程函數 querySelectorAll(selector:str)
獲取匹配的所有元素selector作為列表。
參數:搜索元素的選擇器
返回列表或返回空列表。
協程函數 querySelectorAllEval(selector:str,pageFunction:str,*args)
對所有匹配元素執行js
參數:
selector(str)-選擇器。
pageFunction(str)-要在瀏覽器上運行的JavaScript函數的字符串,此函數將匹配元素的數組作為第一個參數。
args(Any)-傳遞給pageFunction的其他參數。
協程函數 querySelectorEval(selector:str,pageFunction:str,*args)
對匹配的元素執行js函數
參數:
selector(str)-定位的選擇器字符串。
pageFunction(str)-要在瀏覽器上計算的JavaScript函數的字符串,此函數采用與選擇器匹配的元素作為第一個參數。
args(Any)-傳遞給pageFunction的參數。
如果沒有元素匹配,則此方法會引發錯誤selector
協程函數 addScriptTag(options: Dict[KT, VT] = None,**kwargs)
將腳本標記添加到此頁面
其中需要一個必須參數url,path或content
url (字符串):要添加的腳本的URL。
path (字符串):要添加的本地JavaScript文件的路徑。
content (字符串):要添加的JavaScript字符串。
type(字符串):腳本類型,使用module以加載一個JavaScript ES6模塊。
返回ElementHandle對象
協程函數 addStyleTag(options: Dict[KT, VT] = None, **kwargs)
將樣式或鏈接標記添加到此頁面
需要一個必須參數url,path或content
url (字符串):要添加的鏈接標記的URL。
path (字符串):要添加的本地CSS文件的路徑。
content (字符串):要添加的CSS字符串。
返回添加標簽后的ElementHandle
協程函數 authenticate(credentials: Dict[str, str])
提供http身份驗證的憑據
credentials為None或dict含有有username和 password的字段字典
協程函數 bringToFront()
將頁面置于前面(激活選項卡)
browser
獲取該頁面所屬的瀏覽器對象
協程函數 click(selector: str, options: dict = None, **kwargs)
單擊匹配selector的元素
將先獲取selector元素,在視圖底部,將滾動到視圖中,然后使用mouse單擊元素的中心,如果沒有匹配selector,則該方法會引發 PageError
可用選項包括:
button(STR):,left,right或middle,默認為 left。
clickCount (int):默認為1。
delay(int | float):等待時間mousedown和 mouseup以毫秒為單位默認為0。
注意
如果此方法觸發元素并且存在其他的的點擊事件,則容易產生混亂的判斷,單擊并等待的正確模式如下:
await asyncio.gather(page.waitForNavigation(waitOptions),page.click(selector, clickOptions), )協程函數 close(options: Dict[KT, VT] = None, **kwargs)
作用是關閉此頁面。
可用選項:
runBeforeUnload(bool):默認為False,是否運行頁面的處理函數
注意
如果runBeforeUnload傳遞為True,則beforeunload 可以執行彈出對話框,可以通過頁面的dialog事件手動處理 。
協程函數 content()
獲取頁面的完整HTML源碼
協程函數 cookies(* urls )
獲取cookie,如果未指定URL,則此方法返回當前頁面URL的cookie,如果指定了URL,則僅返回這些URL的cookie。
返回的cookie是包含以下字段的字典列表:
name (STR)
value (STR)
url (STR)
domain (STR)
path (STR)
expires (數字):Unix時間,以秒為單位
httpOnly (布爾)
secure (布爾)
session (布爾)
sameSite(str):'Strict'或'Lax'
coverage
返回Coverage
協程函數 deleteCookie(* cookies )
刪除cookie,cookies 應該是包含這些字段的字典:
name(str):必填
url (STR)
domain (STR)
path (STR)
secure (布爾)
協程函數 emulate(options: dict = None, **kwargs)
模擬給定的設備信息和用戶代理,此方法是調用兩個方法的快捷方式:
setUserAgent()
setViewport()
options 是包含以下字段的字典:
viewport(dict)含下列字段
width (int):頁面寬度(以像素為單位)。
height (int):頁面寬度(以像素為單位)。
deviceScaleFactor(float):指定設備比例(可以認為是dpr),默認為1。
isMobile(bool):是否考慮標簽。默認為。meta viewportFalse
hasTouch(bool):指定viewport是否支持觸摸事件。默認為False。
isLandscape(bool):指定視口是否處于橫向模式。默認為False。
userAgent (str):用戶代理字符串
協程函數 emulateMedia(mediaType: str = None)
模擬頁面的css媒體類型。
參數:
mediaType(str) - 更改頁面的CSS媒體類型,允許值'screen','print'和 None,傳入None禁用模擬媒體
協程函數 evaluate(pageFunction:str,* args,force_expr:bool = False )
在瀏覽器上執行js-function或js-expression并獲取結果。
參數:
pageFunction(str) - 要在瀏覽器上執行的js-function / expression的字符串
force_expr(bool) - 如果為True,則計算pageFunction為表達式。如果為False(默認值),請嘗試自動檢測函數或表達式。
注意:force_exproption是僅關鍵字參數。
協程函數 evaluateHandle(pageFunction:str,* args )
執行此頁面上的功能
evaluateHandle()和evaluate()之間的區別是 evaluateHandle返回JSHandle對象(不是值)。
參數:
pageFunction(str) - 要執行的JavaScript函數。
協程函數 evaluateOnNewDocument(pageFunction:str,* args )
在文檔中添加JavaScript函數。
將在以下情況發生時調用此函數:
每當頁面被導航時
每當子框架被附加或導航時。在這種情況下,在新附加的幀的上下文中調用該函數。
協程函數 exposeFunction(name:str,pyppeteerFunction:Callable [[...],Any] )
將python函數添加到瀏覽器的window對象中,可以從chrome進程調用已注冊的函數。
參數:
name(string) - 窗口對象上函數的名稱。
pyppeteerFunction(Callable) - 將在python進程上調用的函數。此函數不應該是異步函數。
協程函數 focus(selector:str )
聚焦匹配的元素,如果沒有元素匹配selector,拋出PageError
frames
獲取此頁面的所有frame
協程函數 goBack(options: dict = None, **kwargs)
導航到歷史記錄中的上一頁,如果不能回去,返回None。
協程函數 goForward(options: dict = None, **kwargs)
導航到歷史記錄中的下一頁,可用選項與goto()方法相同,如果不能前進,返回None。
協程函數 goto(url:str,options:dict = None,** kwargs )
打開url地址
參數:
url(str) - 將頁面導航到的URL,網址應包括類型https://。
可用選項包括:
timeout(int):最大導航時間(以毫秒為單位),默認為30秒,傳遞0給禁用超時。可以使用該setDefaultNavigationTimeout()方法更改默認值。
waitUntil(str | List [str]):何時考慮導航成功,默認為load。給定事件字符串列表,在所有事件被觸發后,導航被認為是成功的。活動可以是:
load:當load事件被觸發時。
domcontentloaded:當DOMContentLoaded事件被觸發時。
networkidle0:當網絡連接數不超過0時,至少500毫秒。
networkidle2:當網絡連接不超過2個,至少500毫秒。
該Page.goto會引發錯誤:
存在SSL錯誤(例如,在自簽名證書的情況下)
目標網址無效
在timeout導航期間超過
然后主資源無法加載
注意
goto()要么引發錯誤,要么返回主要資源響應。唯一的例外是導航到about:blank或導航到具有不同散列的相同URL,這將成功并返回None。
無頭模式不支持導航到PDF文檔。
協程函數 hover(selector:str )
鼠標懸停在匹配元素上,如果沒有元素則拋出PageError。
協程函數 injectFile(filePath:str )
[已棄用]將文件注入此頁面,不推薦使用此方法,請addScriptTag()改用。
isClosed()
判斷頁面是否關閉
keyboard
獲取Keyboard對象
mainFrame
獲取此頁面Frame的主要內容
協程函數 metrics()
獲取頁面屬性,返回包含指標作為鍵/值對的字典:
Timestamp (number):獲取度量標準樣本的時間戳。
Documents (int):頁面中的文檔數。
Frames (int):頁面中的幀數。
JSEventListeners (int):頁面中的事件數。
Nodes (int):頁面中DOM節點的數量。
LayoutCount (int):完整部分頁面布局的總數。
RecalcStyleCount (int):頁面樣式重新計算的總數。
LayoutDuration (int):頁面持續時間的組合持續時間。
RecalcStyleDuration (int):所有頁面樣式重新計算的組合持續時間。
ScriptDuration (int):JavaScript執行的組合持續時間。
TaskDuration (int):瀏覽器執行的所有任務的組合持續時間。
JSHeapUsedSize (float):使用的JavaScript堆大小。
JSHeapTotalSize (float):JavaScript堆總大小。
mouse
獲取Mouse對象
協程函數 pdf(options: dict = None, **kwargs)
生成頁面的pdf
選項:
path (str):保存PDF的文件路徑。
scale(float):網頁渲染的比例,默認為1。
displayHeaderFooter(bool):顯示頁眉和頁腳。默認為False。
headerTemplate(str):打印標題的HTML模板。應該是有效的HTML標記與以下類。
date:格式化的打印日期
title:文件名
url:文件位置
pageNumber:當前頁碼
totalPages:文檔中的總頁數
footerTemplate(str):打印頁腳的HTML模板。應該使用相同的模板headerTemplate。
printBackground(bool):打印背景圖形。默認為 False。
landscape(bool):紙張方向。默認為False。
pageRanges(字符串):要打印的紙張范圍,例如“1-5,8,11-13”。默認為空字符串,表示所有頁面。
format(str):紙張格式。如果設置,優先于 width或height。默認為Letter。
width (str):紙張寬度,接受標有單位的值。
height (str):紙張高度,接受標有單位的值。
margin(字典):紙張邊距,默認為None。
top (str):上邊距,接受標有單位的值。
right (str):右邊距,接受標有單位的值。
bottom (str):底部邊距,接受標有單位的值。
left (str):左邊距,接受標有單位的值。
返回: 返回生成的PDF bytes對象。
注意
目前僅在無頭模式下支持生成pdf。
pdf()使用printcss media 生成頁面的pdf,要生成帶screen媒體的pdf ,請設置page.emulateMedia('screen')。
默認情況下,pdf()生成帶有修改顏色的pdf以進行打印。使用該--webkit-print-color-adjust屬性強制渲染精確顏色。
await page.emulateMedia('screen')await page.pdf({'path': 'page.pdf'})的width,height和margin選項接受標記單位值,未標記的值被視為像素。
幾個例子:
page.pdf({'width': 100}):打印寬度設置為100像素。
page.pdf({'width': '100px'}):打印寬度設置為100像素。
page.pdf({'width': '10cm'}):打印寬度設置為100厘米。
所有可用的單位是:
px:像素
in:英寸
cm:厘米
mm:毫米
格式選項包括:
Letter:8.5英寸x 11英寸
Legal:8.5英寸x 14英寸
Tabloid:11英寸x 17英寸
Ledger:17英寸x 11英寸
A0:33.1英寸x 46.8英寸
A1:23.4英寸x 33.1英寸
A2:16.5英寸x 23.4英寸
A3:11.7英寸x 16.5英寸
A4:8.27英寸x 11.7英寸
A5:5.83英寸x 8.27英寸
A6:4.13英寸x 5.83英寸
注意
headerTemplate和footerTemplate標記有以下限制:
不在模板內的腳本標記。
頁面樣式在模板中不可見。
協程函數 plainText()
[已棄用]以純文本格式獲取頁面內容。
協程函數queryObjects(prototypeHandle:pyppeteer.execution_context.JSHandle )
迭代js堆并查找具有句柄的所有對象。
參數:
prototypeHandle(JSHandle) - 原型對象的JSHandle。
協程函數 reload()
刷新本頁
協程函數 screenshot(options: dict = None, **kwargs)
屏幕截屏
可以使用以下選項:
path(str):保存圖像的文件路徑。屏幕截圖類型將從文件擴展名中推斷出來。
type(str):指定屏幕截圖類型,可以是jpeg或 png。默認為png。
quality(int):圖像的質量,在0-100之間。不適用于png圖像。
fullPage(bool):如果為true,請截取完整的可滾動頁面。默認為False。
clip(字典):指定頁面剪切區域的對象。此選項應包含以下字段:
x (int):剪輯區域左上角的x坐標。
y (int):剪輯區域左上角的y坐標。
width (int):剪切區域的寬度。
height (int):剪切區域的高度。
omitBackground (bool):隱藏默認的白色背景并允許捕獲具有透明度的屏幕截圖。
encoding(str):圖像的編碼可以是 'base64'或'binary'。默認為'binary'。
協程函數 select(selector:str,* values )
選擇選項并返回所選值,如果沒有元素匹配selector,請加注ElementHandleError。
協程函數 setBypassCSP(enabled:bool )
切換繞過頁面的Content-Security-Policy。
注意
CSP繞過在CSP初始化而不是評估時發生,通常這意味著page.setBypassCSP 應該在導航到域之前調用它。
協程函數 setCacheEnabled(enabled:bool = True )
為每個請求啟用/禁用緩存,默認情況下,啟用緩存
協程函數 setContent(html:str )
將內容設置為此頁面
參數:
html(str) - 要分配給頁面的HTML標記。
協程函數 setCookie(* cookies )
設置cookie
cookies 應該是包含這些字段的字典:
name(str):必填
value(str):必填
url (STR)
domain (STR)
path (STR)
expires (數字):Unix時間,以秒為單位
httpOnly (布爾)
secure (布爾)
sameSite(str):'Strict'或'Lax'
setDefaultNavigationTimeout(timeout:int )
更改默認的最大導航超時,此方法更改以下方法的默認超時30秒:
goto()
goBack()
goForward()
reload()
waitForNavigation()
參數:
timeout(int) - 最大導航時間(以毫秒為單位),設置為零0 禁用超時。
協程函數 setExtraHTTPHeaders(title:Dict [str,str] )
設置額外的HTTP標頭,將在頁面啟動的每個請求中發送額外的HTTP標頭
注意
page.setExtraHTTPHeaders 不保證傳出請求中的標頭順序。
參數:
headers(Dict) - 包含要與每個請求一起發送的其他http標頭的字典。所有標頭值必須是字符串。
本篇文章整理了三分之二還有三分之一明天繼續,來不及了。
重要:因為同步公號的文章格式很難保證,所以后面文章選擇性在其他平臺同步,歡迎移步公眾號(Python之戰),每日更新原汁原味!
總結
以上是生活随笔為你收集整理的mfc 添加 excel类给定关键字不在字典中_pyppeteer最为核心类Page的接口方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32H743+Keil-将变量定义
- 下一篇: Keil | 解决Keil与VScode