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

Selenium操作Ember.js单页应用的元素定位与点击问题

Selenium点击Ember.js单页应用元素问题解决记录

问题背景

刚入门Python开发网页爬虫,在使用Selenium点击目标页面特定元素时遇到障碍:目标网站基于Ember.js构建,属于单页应用(SPA),操作时持续抛出NoSuchElementException错误。由于目标元素的父元素关键标识会动态变化,只能通过子元素(img标签)定位其父元素,且该XPATH在页面中验证可找到对应元素,但代码执行时始终失败。

初始尝试代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
PATH = r'C:\Users\dme03\Desktop\desktop\webdrivers\chromedriver_win32\chromedriver.exe'
driver = webdriver.Chrome(PATH)
driver.get('https://thedailyrecord.com/reader-rankings-interface/')
time.sleep(15)
mim = driver.find_element(By.XPATH, '//img[@src="//media.secondstreetapp.com/1973100?width=370&height=180&cropmode=Fill&anchor=Center"]/parent::div')
mim.click

排查过程

  1. 尝试使用显式等待替代固定休眠,但出现超时错误:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//img[@src="//media.secondstreetapp.com/1973100?width=370&height=180&cropmode=Fill&anchor=Center"]/parent::div')))
  1. 发现元素位于iframe内,调整代码切换到iframe后仍存在点击问题,甚至不确定是否该元素负责跳转:
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@src="https://embed-882706.secondstreetapp.com/embed/ae709978-d6d1-499e-9f5e-136cc36eab1b/"]')))
mim = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//img[@src="//media.secondstreetapp.com/1973100?width=370&height=180&cropmode=Fill&anchor=Center"]/parent::div')))
mim.click

问题解决

最终调整后代码可正常运行,问题已解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:45:33