🛰️ iframe 操作
<iframe>
元素是一种特殊的元素,它既是元素,也是页面。
DrissionPage 无需切入切出即可处理<iframe>
元素。
可实现跨级元素查找、元素内部单独跳转、同时操作<iframe>
内外元素、多线程控制多个<iframe>
等操作。
✅️ 获取<iframe>
对象
获取<iframe>
对象的方法有两种,可用获取普通元素的方式获取,或者用get_frame()
方法获取。
推荐优先使用get_frame()
方法,因为当作普通元素获取时,IDE 无法正确识别获取到的是<iframe>
元素。
📌 get_frame()
此方法用于获取页面中一个<frame>
或<iframe>
对象。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
loc_ind_ele | str int ChromiumFrame | 必填 | 定位符<iframe> 元素序号(从1 开始,负数表示倒数)ChromiumFrame对象 id 属性内容name 属性内容 |
timeout | float | None | 超时时间(秒),为None 时使用页面超时时间 |
返回类型 | 说明 |
---|---|
ChromiumFrame | <frame> 或<iframe> 元素对象 |
NoneElement | 找不到时返回NoneElement |
注意
需要特别注意的是,如果页面中有嵌套的<iframe>
,用序号获取的方式会存在不准确。
比如,用get_frames()
可获取到 6 个元素,但用get_frame(6)
却获取不到最后一个。
这是因为有两个<iframe>
是嵌套关系,导致获取不准确。
示例:
# 使用定位符获取
iframe = tab.get_frame('t:iframe')
# 获取第1个iframe
iframe = tab.get_frame(1)
📌 get_frames()
此方法用于获取页面中多个符合条件的<frame>
或<iframe>
对象。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
locator | str Tuple[str, str] | None | 定位符,为None 时返回所有 |
timeout | float | None | 超时时间(秒),为None 时使用页面超时时间 |
返回类型 | 说明 |
---|---|
List[ChromiumFrame] | <frame> 或<iframe> 元素对象组成的列表 |
提醒
获取所有<iframe>
会很慢,而且浪费资源,一般使用获取需要用到的就好。