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

使用Selenium无法点击ITF网站球员搜索下拉列表元素求助

解决Selenium无法点击ITF球员搜索下拉选项的问题

你遇到的核心问题是搜索下拉列表属于动态渲染元素,输入关键词后需要等待选项完全加载,再精准定位并点击。以下是修正后的完整代码:

from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

url = 'https://www.itftennis.com/en/players/'
player = 'A. Parks'

# 初始化浏览器并打开页面
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
driver.get(url)

# 接受Cookie弹窗
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//button[@id="onetrust-accept-btn-handler"]'))).click()

# 定位搜索框并输入球员名字
sbox = driver.find_element(By.ID, 'player-search-input')
sbox.send_keys(player)

# 等待下拉列表中的目标球员选项加载完成并点击
# 通过类名+文本内容组合定位,确保匹配目标球员
target_player = WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.XPATH, f'//div[contains(@class, "player-search-result-item") and contains(text(), "{player}")]'))
)
target_player.click()

# 后续可添加球员页面信息提取逻辑
# soup = BeautifulSoup(driver.page_source, 'html.parser')
# 具体信息提取代码...

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

关键说明:

  • 强制等待动态元素:用WebDriverWait等待目标选项处于可点击状态,避免因元素未加载完成导致的点击失败。
  • 精准定位规则:通过player-search-result-item类名+球员文本的组合XPath,确保定位到的是搜索结果中的目标选项,而非其他相似元素。
  • 遮挡场景替代方案:如果直接点击无效,可尝试用ActionChains模拟鼠标操作(适用于元素被遮挡的情况):
    from selenium.webdriver.common.action_chains import ActionChains
    ActionChains(driver).move_to_element(target_player).click().perform()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:15:27