Selenium验证元素删除时调用is_displayed()报AttributeError问题求助
问题分析与解决
你的代码报错核心是两个关键问题:
- 方法名误用:Python版Selenium没有
findElements这个驼峰命名的方法,这是Java版的写法。Python里查找单个元素用find_element,查找多个元素用find_elements。 - 逻辑错误:如果用
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
相关产品推荐
相关产品推荐

