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* argsforce_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的接口方法相关推荐

  1. C# 连接MySQL错误给定关键字不在字典中”,下载最新mysql.dll文件即可

    原因是版本问题: C# 连接MySQL查询表错误"KeyNotFoundException, 给定关键字不在字典中",更换最新版本: 即可解决.

  2. dmol3给定关键字不在字典中_Materials Studio自学系列——软件安装常见问题及解决方法...

    Hello! Hello!小伙伴们!,我是新人UP Rianter.疫情期间,Rianter在学习MS的过程中发现非常有用的视频"BV1d741127UF"和"BV1h7 ...

  3. SqlSugar.SqlSugarException: English Message : Connection open error . 给定关键字不在字典中

    错误:SqlSugar.SqlSugarException: English Message : Connection open error . 给定关键字不在字典中.连接数据库过程中发生错误,检查服 ...

  4. KeyNotFoundException: 给定关键字不在字典中

    NHibernate2.1.0GA,在使用过程中,出现以下错误提示: "KeyNotFoundException: 给定关键字不在字典中." 找问题我找了一天,是map文件中的相关 ...

  5. C#连接mysql出现【给定关键字不在字典中】问题解决

    之前,在Ubuntu服务器上安装的mysql-server,本地写了一个客户端(C#),当时开发完成后没什么问题. 最近服务器面临更换,需要把数据备份和恢复到新服务器. 等数据都恢复完了,发现之前的客 ...

  6. dmol3给定关键字不在字典中_一日一技:举例说明python中的map()方法

    map()函数 Python 的map()方法,作为输入提供的迭代器的所有元素应用函数. 例如,迭代器可以是列表,元组,集合,字典,字符串,并且它返回可迭代的映射对象. 另外,map()是python ...

  7. 3给定关键字不在字典中_Python龙珠训练营五:数据结构之字符串、字典

    1 字符串 1.1 字符串的定义 1. Python 中字符串被定义为引号之间的字符集合. 2. Python 支持使用成对的 单引号 或 双引号. 3. 如果字符串中需要出现单引号或双引号,可以使用 ...

  8. dmol3给定关键字不在字典中_python中的数据结构与算法(2):字典与集合

    1. 字典是什么 字典是便于信息检索的一种数据结构,鉴于信息检索在程序中无处不在,字典的使用场景也非常广泛,包括许多 python 内部机制的实现,也依赖字典结构,比如命名空间的管理等. 检索一般是根 ...

  9. 给定关键字不在字典中怎么解决_什么是字典?我们为什么要学它?你不知,现在你只需1分钟就可学会...

    Hello,大家好,在前面我们说过ExceL中间的数组使用方法,今天要给大家简单说下VBA字典的使用方法和优点.相信你看到具体的实例了,就会发现原来数组+字典这么厉害的.现在一起来看看吧! 那么有些同 ...

最新文章

  1. javascript知识点
  2. 计算机强势专业大学,计算机专业实力最强的6所大学,认可度高,竞争优势大,值得选择...
  3. pycharm mysql安装_PyCharm安装连接MySQL
  4. golang文件夹位置判断
  5. 9种让肌肤美白的简单方法 - 生活至上,美容至尚!
  6. python-scrapy框架学习笔记
  7. 数据可视化分析软件开发_大数据系统建设解决方案
  8. python利用PyQt5制作QQ空间登入客户端
  9. 向 Linux kernel 社区提交patch补丁步骤总结(已验证成功)
  10. 不知道怎么压缩图片大小?分享2个压缩小技巧
  11. CNVD-2020-10487(CVE-2020-1938)tomcat ajp 文件读取漏洞
  12. 基于GNN网络的session推荐模型(知识图谱技术在推荐场景的应用)
  13. 代码源每日一题-宝箱(贪心/思维)
  14. 21点(Blackjack)与概率
  15. 超市结算系统软件测试,软件测试报告-超市管理系统【参考】.doc
  16. python管理系统设计_基于Python和Django框架的物联网智能设备管理系统的设计与实现
  17. 微信图片消息 服务器故障,解决图片上传到微信服务器后无法显示问题
  18. Android kotlin自定义自动换行LinearLayout
  19. vb.net如何查询电脑麦克风收到声音_远程会议痛点多?看Poly Studio X30如何破局
  20. ICP增值电信业务许可证是什么

热门文章

  1. 苹果手机提醒事项怎么设置农历生日提醒?
  2. React学习初探(环境搭建)
  3. Jodd 工具包之StringUtil
  4. 解决Vista文件操作缓慢问题:五大方案
  5. [转载]《不要一辈子靠技术生存》
  6. 别以为程序员的工作就是写代码
  7. Excel和PPT已经落后了,可视化大屏强在哪?一次看过瘾
  8. 没有报表和数据分析,银行数据仓库只能是一盘散沙
  9. 再好的代码没有电也跑不了
  10. 这让全场的chinaakd