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
相关产品推荐
相关产品推荐

