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

Python 3环境下Selenium WebDriver无法选中HTML复选框选项的问题求助

解决Selenium点击复选框时的TypeError问题

嘿,我来帮你搞定这个报错!你遇到的TypeError: 'str' object is not callable是个很常见的小失误,咱们一步步捋清楚~

错误原因分析

你写的代码里这一行出了问题:

driver.find_element(By.XPATH('//*[@id="id_presented"]')).click()

问题就在于By.XPATH('xxx')的写法——By.XPATH其实是selenium.webdriver.common.by.By类里的字符串常量(它的值就是"xpath"),根本不是可调用的函数,所以你不能用括号把表达式包在它后面,这才触发了“字符串不可调用”的错误。

修正后的代码

正确的用法是把By.XPATH作为第一个参数,定位表达式作为第二个参数,分开传给find_element方法:

from selenium.webdriver.common.by import By

driver.get('website_acessed')
# 注意参数是两个:第一个指定定位方式,第二个是具体的XPATH表达式
driver.find_element(By.XPATH, '//*[@id="id_presented"]').click()

顺便把你代码里的"换成了普通双引号,这样XPATH表达式更易读,也避免了不必要的转义问题。

额外小建议(可选)

如果网页加载速度不稳定,直接调用find_element可能会因为元素还没加载完成而报错,推荐用显式等待来确保元素可点击后再操作,稳定性会高很多:

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

driver.get('website_acessed')
# 最长等待10秒,直到元素处于可点击状态
WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//*[@id="id_presented"]'))
).click()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:12:37