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

Selenium XPath无法点击IMDB电影评分按钮问题求助

IMDB电影评分按钮点击失败(Selenium)

尝试为IMDB电影《Mona Lisa and the Blood Moon》设置评分,第一步点击评分入口按钮正常,但点击1星按钮时触发超时异常。

当前Python代码(已省略登录步骤)

driver.get('https://www.imdb.com/title/tt8760670/?ref_=nv_sr_srsg_0')
wait = WebDriverWait(driver, 20)

xpath = "(//div[@data-testid='hero-rating-bar__user-rating'])[1]//button"
wait.until(EC.element_to_be_clickable((By.XPATH, xpath))).click()

xpath = "//button[@aria-label='Rate 1']//svg"
wait.until(EC.element_to_be_clickable((By.XPATH, xpath))).click()

目标元素HTML结构

<div class="ipc-starbar">
    <div class="ipc-starbar__touch"></div>
    <div class="ipc-starbar__rating">
        <button class="ipc-starbar__rating__button" role="button" aria-label="Rate 1" tabindex="0">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" class="ipc-icon ipc-icon--star ipc-starbar__star ipc-starbar__star--active" id="iconContext-star" viewBox="0 0 24 24" fill="currentColor" role="presentation">
                <path d="M12 17.27l4.15 2.51c.76.46 1.69-.22 1.49-1.08l-1.1-4.72 3.67-3.18c.67-.58.31-1.68-.57-1.75l-4.83-.41-1.89-4.46c-.34-.81-1.5-.81-1.84 0L9.19 8.63l-4.83.41c-.88.07-1.24 1.17-.57 1.75l3.67 3.18-1.1 4.72c-.2.86.73 1.54 1.49 1.08l4.15-2.5z"></path>
            </svg>
        </button>

报错信息

File "C:\Users\user\PycharmProjects\SeleniumProject1\Main\Show_Change.py", line 78, in
wait.until(EC.element_to_be_clickable((By.XPATH, xpath))).click()
File "C:\Users\user\PycharmProjects\SeleniumProject1\venv\lib\site-packages\selenium\webdriver\support\wait.py", line 90, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Stacktrace:
Backtrace:

环境信息

  • PyCharm 2022.2.2 Build #PC-222.4167.33
  • Python 3.10.7
  • chromedriver win32 105.0.5195.52

解决方案

1. 修正元素定位路径

原代码定位到svg子元素,但实际可交互的点击目标是父级button,直接定位button更稳定:

# 替换第二段的xpath
xpath = "//button[@aria-label='Rate 1']"
wait.until(EC.element_to_be_clickable((By.XPATH, xpath))).click()

2. 处理遮挡/可视区域问题

若评分按钮位于弹窗内,可能因元素未完全进入可视区域导致点击失败,可先滚动到元素位置再点击:

from selenium.webdriver.common.action_chains import ActionChains

rate_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='Rate 1']")))
# 滚动到元素可见
driver.execute_script("arguments[0].scrollIntoView();", rate_btn)
# 用ActionChains执行点击
ActionChains(driver).move_to_element(rate_btn).click().perform()

3. 等待评分弹窗完全加载

先等待评分弹窗的容器元素加载完成,再定位按钮:

# 等待评分弹窗容器出现
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "ipc-starbar")))
# 定位并点击1星按钮
rate_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='Rate 1']")))
rate_btn.click()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:35:20