🚤 获取元素信息
浏览器元素对应的对象是ChromiumElement
和ChromiumShadowRoot
,本节介绍获取到元素对象后,如何获取其信息。
ChromiumElement
拥有SessionElement
所有属性,并有更多浏览器专属的信息。本节重点介绍如何获取浏览器专有的元素信息。
✅️️ 与SessionElement
共有信息
此处仅列出列表,具体用法请查看收发数据包部分的“获取元素信息”。
属性或方法 | 说明 |
---|---|
html |
此属性返回元素的outerHTML 文本 |
inner_html |
此属性返回元素的innerHTML 文本 |
tag |
此属性返回元素的标签名 |
text |
此属性返回元素内所有文本组合成的字符串 |
raw_text |
此属性返回元素内原始文本 |
texts() |
此方法返回元素内所有直接子节点的文本,包括元素和文本节点 |
comments |
此属性以列表形式返回元素内的注释 |
attrs |
此属性以字典形式返回元素所有属性及值 |
attr() |
此方法返回元素某个attribute 属性值 |
link |
此方法返回元素的 href 属性或 src 属性 |
page |
此属性返回元素所在的页面对象 |
xpath |
此属性返回当前元素在页面中 xpath 的绝对路径 |
css_path |
此属性返回当前元素在页面中 css selector 的绝对路径 |
✅️️ 大小和位置
📌 size
此属性以元组形式返回元素的大小。
类型:Tuple[int, int]
📌 location
和locations.location
这两个属性是一样的,以元组形式返回元素左上角在整个页面中的坐标。
类型:Tuple[int, int]
📌 locations.midpoint
此属性以元组形式返回元素中点在整个页面中的坐标。
类型:Tuple[int, int]
📌 locations.click_point
此属性以元组形式返回元素点击点在整个页面中的坐标。
点击点是指click()
方法点击时的位置,位于元素中上部。
类型:Tuple[int, int]
📌 locations.viewport_location
此属性以元组形式返回元素左上角在当前视口中的坐标。
类型:Tuple[int, int]
📌 locations.viewport_midpoint
此属性以元组形式返回元素中点在当前视口中的坐标。
类型:Tuple[int, int]
📌 locations.viewport_click_point
此属性以元组形式返回元素点击点在当前视口中的坐标。
类型:Tuple[int, int]
📌 locations.screen_location
此属性以元组形式返回元素左上角在屏幕中的坐标。
类型:Tuple[int, int]
📌 locations.screen_midpoint
此属性以元组形式返回元素中点在屏幕中的坐标。
类型:Tuple[int, int]
📌 locations.screen_click_point
此属性以元组形式返回元素点击点在屏幕中的坐标。
类型:Tuple[int, int]
✅️️ 属性和内容
📌 pseudo.before
此属性以文本形式返回当前元素的::before
伪元素内容。
类型:str
📌 pseudo.after
此属性以文本形式返回当前元素的::after
伪元素内容。
类型:str
📌 style()
该方法返回元素 css 样式属性值,可获取伪元素的属性。它有两个参数,style
参数输入样式属性名称,pseudo_ele
参数输入伪元素名称,省略则获取普通元素的 css 样式属性。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
style |
str |
必填 | 样式名称 |
pseudo_ele |
str |
'' |
伪元素名称(如有) |
返回类型 | 说明 |
---|---|
str |
样式属性值 |
示例:
# 获取 css 属性的 color 值
prop = ele.style('color')
# 获取 after 伪元素的内容
prop = ele.style('content', 'after')
📌 prop()
此方法返回property
属性值。它接收一个字符串参数,返回该参数的属性值。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
prop |
str |
必填 | 属性名称 |
返回类型 | 说明 |
---|---|
str |
属性值 |
📌 shadow_root
此属性返回元素内的 shadow-root 对象,没有的返回None
。
类型:ChromiumShadowRoot
✅️️ 状态信息
状态信息藏在states
属性中。
📌states.is_in_viewport
此属性以布尔值方式返回元素是否在视口中,以元素可以接受点击的点为判断。
类型:bool
📌states.is_alive
此属性以布尔值形式返回当前元素是否仍可用。用于判断 d 模式下是否因页面刷新而导致元素失效。
类型:bool
📌 states.is_checked
此属性以布尔值返回表单单选或多选元素是否选中。
类型:bool
📌 states.is_selected
此属性以布尔值返回<select>
元素中的项是否选中。
类型:bool
📌 states.is_enabled
此属性以布尔值返回元素是否可用。
类型:bool
📌 states.is_displayed
此属性以布尔值返回元素是否可见。
类型:bool
📌 states.is_covered
此属性以布尔值返回元素是否被其它元素覆盖。
类型:bool
✅️️ 保存和截图
保存功能是本库一个特色功能,可以直接读取浏览器缓存,无须依赖另外的 ui 库或重新下载就可以保存页面资源。
作为对比,selenium 无法自身实现图片另存,往往须要通过使用 ui 工具进行辅助,不仅效率和可靠性低,还占用键鼠资源。
📌 get_src()
此方法用于返回元素src
属性所使用的资源。base64 的可转为bytes
返回,其它的以str
返回。无资源的返回None
。
例如,可获取页面上图片字节数据,用于识别内容,或保存到文件。<script>
标签也可获取 js 文本。
注意
无法获取 Blob 内容。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
timeout |
float |
None |
等待资源加载超时时间,为None 时使用元素所在页面timeout 属性 |
base64_to_bytes |
bool |
True |
为True 时,如果是 base64 数据,转换为bytes 格式 |
返回类型 | 说明 |
---|---|
str |
资源字符串 |
None |
无资源的返回None |
示例:
📌 save()
此方法用于保存get_src()
方法获取到的资源到文件。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
path |
str Path |
None |
文件保存路径,为None 时保存到当前文件夹 |
rename |
str |
None |
文件名称,须包含后缀,为None 时从资源 url 获取 |
timeout |
float |
None |
等待资源加载超时时间,为None 时使用元素所在页面timeout 属性 |
返回:None
示例:
📌 get_screenshot()
此方法用于对元素进行截图。若截图时元素在视口外,须 90 以上版本内核支持。
下面三个参数三选一,优先级:as_bytes
>as_base64
>path
。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
path |
str Path |
None |
保存图片的完整路径,文件后缀可选'jpg' 、'jpeg' 、'png' 、'webp' 为 None 时以 jpg 格式保存在当前文件夹 |
as_bytes |
str True |
None |
是否以字节形式返回图片,可选'jpg' 、'jpeg' 、'png' 、'webp' 、None 、True 不为 None 时path 和as_base64 参数无效为 True 时选用 jpg 格式 |
as_base64 |
str True |
None |
是否以 base64 形式返回图片,可选'jpg' 、'jpeg' 、'png' 、'webp' 、None 、True 不为 None 时path 参数无效为 True 时选用 jpg 格式 |
返回类型 | 说明 |
---|---|
bytes |
as_bytes 生效时返回图片字节 |
str |
as_bytes 和as_base64 为None 时返回图片完整路径 |
str |
as_base64 生效时返回 base64 格式的字符串 |
示例:
img = page('tag:img')
img.get_screenshot()
bytes_str = img.get_screenshot(as_bytes='png') # 返回截图二进制文本
✅️️ ChromiumShadowRoot
属性
本库把 shadow dom 的root
看作一个元素处理,可以获取属性,也可以执行其下级的查找,使用逻辑与ChromiumElement
一致,但属性较之少,有如下这些:
📌 tag
此属性返回元素标签名,即'shadow-root'
。
类型:str
📌 html
此属性返回shadow_root
的 html 文本,由<shadow_root></shadow_root>
标签包裹。
类型:str
📌 inner_html
此属性返回shadow_root
内部的 html 文本。
类型:str
📌 page
此属性返回元素所在页面对象。
类型:ChromiumPage
、ChromiumTab
、ChromiumFrame
、WebPage
📌 parent_ele
此属性返回所依附的普通元素对象。
类型:ChromiumElement
📌 states.is_enabled
与ChromiumElement
一致。
类型:bool
📌 states.is_alive
与ChromiumElement
一致。
类型:bool