You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Selenium正确获取iframe标签的src属性链接?

现有代码问题说明
  • 标签匹配错误:目标元素是<iframe>标签,代码中XPath写为//a[@id='result'],会匹配id为result的超链接<a>标签,完全无法定位到目标iframe,自然读取不到正确的src属性。
  • 存在冗余操作:提取iframe标签的src属性不需要执行点击动作,多余的点击操作可能触发页面意外跳转、弹窗等异常,干扰流程。
  • 等待条件不合理:iframe是页面嵌入的文档容器,不属于可点击的交互元素,使用element_to_be_clickable作为等待条件没有实际意义,只要元素加载到DOM树中即可读取属性。
  • 使用了废弃API:find_element_by_xpath是Selenium 4.3之前版本的旧API,高版本Selenium已经移除了所有独立的find_element_by_*方法,运行会直接抛出属性错误。
  • 逻辑存在时序风险:等待逻辑和元素读取逻辑分离,没有复用等待阶段拿到的元素实例,极端场景下可能出现等待完成后元素临时被移除、导致读取元素时报错。
正确实现代码

不需要切换iframe上下文(仅操作iframe内部元素时才需要切换),直接等待目标iframe加载到DOM后读取src属性即可,参考代码如下:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 等待id为result的iframe元素加载到DOM中,直接获取元素实例
target_iframe = WebDriverWait(driver, 20).until(
    EC.presence_of_element_located((By.ID, 'result'))
)
# 读取src属性值
adres1 = target_iframe.get_attribute('src')

补充说明:如果后续需要操作该iframe内部的页面元素,才需要执行driver.switch_to.frame(target_iframe)切换到iframe的文档上下文,仅提取iframe标签自身的属性不需要做切换操作。

内容的提问来源于stack exchange,提问作者Lastepheus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:21:50