Python中selenium找不到页面元素,页面已经显示了但是还是找不到怎么办?
这个是网页 https://www.igxe.cn/product/578080/602885 当点击出售的时候, 售价是可以获取到的,
但是点击求购的时候,

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

我看了, 不是 frame 的问题, 输出这个页面的内容这个元素也是有的, 就是不知道怎么会出现这个问题。
selenium click 求购页面下的元素是显示元素不可见, 但是这个元素命名是能看到的。 不知道为什么有这个问题所以, 就指教。
Python中selenium找不到页面元素,页面已经显示了但是还是找不到怎么办?
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()
几个关键点:
- 别用
time.sleep:这是笨办法,固定等待要么浪费时间,要么时间不够。 - 选对等待条件:
presence_of_element_located:元素出现在DOM里就行(可能隐藏)。visibility_of_element_located:元素不仅出现,还要可见(更常用)。element_to_be_clickable:元素可见且可点击(用于按钮、链接等交互)。
- 检查你的定位器:页面结构可能变了,用浏览器开发者工具(F12)的Console里试试
$x("你的xpath")或$("#id")确认一下。 - 可能有iframe:如果元素在
<iframe>里,你需要先driver.switch_to.frame("frame_name_or_id")切进去。 - 可能是新窗口/标签页:元素在新窗口里?那得先
driver.switch_to.window(driver.window_handles[-1])切过去。
一句话总结:用显式等待(WebDriverWait)替代隐式等待和固定等待,并检查元素是否在iframe或新窗口里。
……有可能 html 语法错误
实在不行就用正则表达式啊
这也能弄个交易所…服
心疼 IG,刚经历完封号风波还要不停反爬虫
问题是这个元素已经显示出来了为什么程序里面还是显示隐藏。

