Python中selenium找不到页面元素,页面已经显示了但是还是找不到怎么办?

这个是网页 https://www.igxe.cn/product/578080/602885 当点击出售的时候, 售价是可以获取到的,

但是点击求购的时候,

1

元素已经显示了, 但是获取不到, 这个是怎么回事

2

我看了, 不是 frame 的问题, 输出这个页面的内容这个元素也是有的, 就是不知道怎么会出现这个问题。

selenium click 求购页面下的元素是显示元素不可见, 但是这个元素命名是能看到的。 不知道为什么有这个问题所以, 就指教。


Python中selenium找不到页面元素,页面已经显示了但是还是找不到怎么办?

6 回复

driver_sell.find_element_by_css_selector(’#product_purchases’).click()
time.sleep(2)

print(driver_sell.find_element_by_css_selector(’#js-tbody-data > tr:nth-child(1) > td:nth-child(3) > span’).text)


这个就是对应的代码 print 的是空的, 但是如果打出这个页面的 source code 元素都是存在的


遇到这种问题,先别急,这是Selenium自动化测试里最常见的坑之一。核心思路就一个:等它准备好。页面“显示”了不代表DOM就绪或者元素可交互了。

直接上最稳的解决方案,用 WebDriverWait 配合 expected_conditions

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

driver = webdriver.Chrome()
driver.get("你的网址")

try:
    # 关键在这里:显式等待元素出现并且可点击
    # 替换 'your_element_id' 为你的实际定位器
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "your_element_id"))
        # 或者用其他定位方式和条件:
        # EC.visibility_of_element_located((By.XPATH, "//button[@class='submit']"))
        # EC.element_to_be_clickable((By.NAME, "login"))
    )
    # 找到元素后进行操作
    element.click()
except TimeoutException:
    print("超时:在10秒内未找到元素")
finally:
    driver.quit()

几个关键点:

  1. 别用 time.sleep:这是笨办法,固定等待要么浪费时间,要么时间不够。
  2. 选对等待条件
    • presence_of_element_located:元素出现在DOM里就行(可能隐藏)。
    • visibility_of_element_located:元素不仅出现,还要可见(更常用)。
    • element_to_be_clickable:元素可见且可点击(用于按钮、链接等交互)。
  3. 检查你的定位器:页面结构可能变了,用浏览器开发者工具(F12)的Console里试试 $x("你的xpath")$("#id") 确认一下。
  4. 可能有iframe:如果元素在 <iframe> 里,你需要先 driver.switch_to.frame("frame_name_or_id") 切进去。
  5. 可能是新窗口/标签页:元素在新窗口里?那得先 driver.switch_to.window(driver.window_handles[-1]) 切过去。

一句话总结:用显式等待(WebDriverWait)替代隐式等待和固定等待,并检查元素是否在iframe或新窗口里。

……有可能 html 语法错误

实在不行就用正则表达式啊

这也能弄个交易所…服

心疼 IG,刚经历完封号风波还要不停反爬虫

问题是这个元素已经显示出来了为什么程序里面还是显示隐藏。

回到顶部