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

Selenium操作TradingView打开BTC并添加指标时出现NoSuchElementException

解决Selenium切换新标签页后找不到元素的问题

你遇到的NoSuchElementException核心原因是:点击按钮打开新标签页后,WebDriver还停留在原来的标签页上,自然找不到新标签页里的元素。另外你的代码里还有个小拼写错误——execute_script里写的是argument[0],正确应该是arguments[0]。

下面是修正后的代码,同时把不可靠的time.sleep换成Selenium的显式等待,让代码更稳定:

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

# 初始化浏览器
options = ChromeOptions()
driver = webdriver.Chrome("E:\\Chrome driver\\chromedriver.exe", options=options)
driver.get("https://www.tradingview.com/symbols/BTCUSDTPERP/ideas/?exchange=BINANCE")

# 点击按钮打开新标签页
advanced_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "#anchor-page-1 > div > div.tv-category-header__buttons.tv-category-header__buttons--adaptive.tv-category-header__buttons--hide-if_bigger-than_phone > div > a.btn-Phr0VjiT.btnDesktop-Phr0VjiT.button-OvB35Th_.size-large-OvB35Th_.color-brand-OvB35Th_.variant-secondary-OvB35Th_.with-start-icon-OvB35Th_.with-end-icon-OvB35Th_"))
)
driver.execute_script("arguments[0].click()", advanced_btn)

# 切换到新打开的标签页
# 获取所有窗口句柄,切换到最后一个(新打开的标签页)
all_windows = driver.window_handles
driver.switch_to.window(all_windows[-1])

# 等待新标签页的目标按钮加载完成并点击
chart_btn = WebDriverWait(driver, 15).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "#header-toolbar-chart-styles > div"))
)
driver.execute_script("arguments[0].click()", chart_btn)

# 后续操作完成后可以关闭浏览器
# driver.quit()

关键改动说明:

  • 用WebDriverWait显式等待元素可点击,替代固定时长的time.sleep,避免页面加载慢导致的元素找不到问题
  • 添加了窗口句柄切换逻辑,让WebDriver聚焦到新打开的标签页
  • 修正了execute_script里的参数拼写错误(arguments而非argument)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:02:21