Selenium定位按钮报错:'str' object is not callable 求助
问题根源
报错TypeError: 'str' object is not callable是因为你错误地把By.CSS_SELECTOR当作函数调用了——By.CSS_SELECTOR本质是字符串常量,EC.element_to_be_clickable()要求传入元组格式的参数:(定位方式, 选择器字符串)。
修正后的代码
CSS选择器实现
def accept_cookies(self) -> None: # 正确传递元组参数:(定位方式, 选择器文本) accept_cookie_button = WebDriverWait(self.driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, 'button#onetrust-accept-btn-handler')) ) accept_cookie_button.click()
ID定位实现
如果用ID定位,同样遵循元组传参规则:
def accept_cookies(self) -> None: accept_cookie_button = WebDriverWait(self.driver, 10).until( EC.element_to_be_clickable((By.ID, 'onetrust-accept-btn-handler')) ) accept_cookie_button.click()
额外注意点
- 确认已导入必要模块:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By - 若按钮仍无法定位,可尝试更稳定的复合选择器(结合class属性):
(By.CSS_SELECTOR, 'button.onetrust-close-btn-handler.onetrust-accept-btn-handler') - CoinMarketCap的Cookie弹窗一般不在iframe内,若遇到特殊情况,需先切换对应iframe再操作。
内容的提问来源于stack exchange,提问作者j stevenage
相关产品推荐
相关产品推荐

