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

Selenium无法找到script标签?使用XPath匹配带language属性的脚本节点失败如何解决

修复script标签定位失效问题的方案

原因1:Selenium版本API不兼容

Selenium 4.0及以上版本已经正式废弃find_elements_by_xpath这类旧定位API,直接调用会无法执行或返回空结果,修复步骤如下:

  • 首先导入By定位依赖:
    from selenium.webdriver.common.by import By
  • 将原定位语句替换为新API写法,支持按属性存在匹配或者精准值匹配:
    • 仅匹配所有带language属性的script标签:driver.find_elements(By.XPATH, "//script[@language]")
    • 精准匹配language值为javascript的script标签:driver.find_elements(By.XPATH, "//script[@language='javascript']")

原因2:DOM未完成加载就执行定位

如果页面是动态渲染的,执行定位语句时script标签还没插入到DOM中,会返回空结果,加入显式等待即可解决:

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

# 最长等待10秒,直到所有符合条件的标签加载完成
target_elements = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.XPATH, "//script[@language='javascript']"))
)

原因3:目标标签位于iframe内部

如果script标签是嵌套在iframe里的,直接在主文档搜索无法找到对应节点,需要先切换到对应iframe再执行定位:

  • 切换到对应iframe:driver.switch_to.frame("你的iframeID/iframeName")
  • 执行定位操作,获取对应节点
  • 操作完成后切回主文档:driver.switch_to.default_content()

排查验证方法

如果修改后仍无法定位,可以先打印当前页面的源码确认目标标签是否真实存在:
print(driver.page_source)
排除动态渲染逻辑没有触发、页面跳转失败等前置问题。

内容的提问来源于stack exchange,提问作者a.programmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 14:06:09