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

Selenium验证元素删除时调用is_displayed()报AttributeError问题求助

问题分析与解决

你的代码报错核心是两个关键问题:

  1. 方法名误用:Python版Selenium没有findElements这个驼峰命名的方法,这是Java版的写法。Python里查找单个元素用find_element,查找多个元素用find_elements。
  2. 逻辑错误:如果用find_element查找已删除的元素,它不会返回None,而是直接抛出NoSuchElementException;如果用find_elements,返回的是元素列表,列表本身没有is_displayed()方法。

正确实现方式

方式一:捕获异常判断元素不存在

from selenium.common.exceptions import NoSuchElementException

try:
    # 尝试定位目标元素
    element = driver.find_element(By.XPATH, '//*[@id="pr_id_1-table"]/tbody/tr[4]/td[5]/a[2]')
    # 能找到元素则进一步判断可见性
    if element.is_displayed():
        print("Test failed: Element is visible.")
except NoSuchElementException:
    # 抛出异常说明元素已被删除
    print("Test passed: Element is not visible.")

driver.quit()

方式二:通过元素列表长度判断

# 查找所有匹配的元素,返回列表
elements = driver.find_elements(By.XPATH, '//*[@id="pr_id_1-table"]/tbody/tr[4]/td[5]/a[2]')
# 列表不为空且第一个元素可见,说明删除失败
if len(elements) > 0 and elements[0].is_displayed():
    print("Test failed: Element is visible.")
else:
    # 列表为空或元素不可见,说明删除成功
    print("Test passed: Element is not visible.")

driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:16:08