Selenium使用CSS选择器定位元素报错,无法校验img标签src属性值
问题根因
你触发TypeError: 'str' object is not callable报错的核心原因是By.CSS_SELECTOR的用法错误:By.CSS_SELECTOR是Selenium预定义的字符串常量,不是可调用的函数,你错误地将选择器字符串用括号包裹传入By.CSS_SELECTOR,等同于尝试调用一个字符串,触发类型错误。
正确实现代码
1. 基础实现
首先确认你已经导入了必要的依赖:
from selenium.webdriver.common.by import By
然后按正确语法定位元素、校验src属性:
# 定位到目标img元素 img_element = driver.find_element(By.CSS_SELECTOR, "#body_logo img") # 获取img的src属性值 src_val = img_element.get_attribute("src") # 校验是否包含指定字符串,可替换为你要检测的目标内容 target = "#local" if target in src_val: print("src属性校验通过") else: print(f"校验失败,当前src为:{src_val}")
2. 优化方案(避免元素未加载导致的定位失败)
可以增加显式等待,等元素加载完成后再执行操作:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 最长等待10秒,直到目标img元素出现在DOM中 wait = WebDriverWait(driver, 10) img_element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#body_logo img"))) # 后续校验逻辑同上 src_val = img_element.get_attribute("src")
内容的提问来源于stack exchange,提问作者n00n
相关产品推荐
相关产品推荐

