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

Selenium定位按钮报错:'str' object is not callable 求助

解决Selenium定位OneTrust Cookie按钮的TypeError问题

问题根源

报错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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:22:34