Selenium元素存在验证:解决二选一元素查找报错问题
修复Selenium元素查找报错的方案
你的问题根源在于driver.find_element_by_id()在找不到对应元素时会直接抛出NoSuchElementException异常,而非返回False,导致条件判断逻辑无法正常执行。以下是两种可行的修复方案:
方案一:使用复数形式的元素查找方法
find_elements_by_id()(注意复数形式)在找不到元素时会返回空列表,空列表在布尔判断中会被视为False,不会抛出异常。修改后的代码如下:
if driver.find_elements_by_id('container_53201'): print('Single Match') elif driver.find_elements_by_id('container_24206'): print('multiple Match') else: print('Could not find')
原理:目标元素存在时,该方法返回包含对应元素的非空列表,布尔判断为True;不存在则返回空列表,判断为False,完美适配你的分支逻辑。
方案二:捕获NoSuchElementException异常
显式捕获查找元素时的异常,通过异常分支处理元素不存在的情况,代码如下:
from selenium.common.exceptions import NoSuchElementException try: driver.find_element_by_id('container_53201') print('Single Match') except NoSuchElementException: try: driver.find_element_by_id('container_24206') print('multiple Match') except NoSuchElementException: print('Could not find')
原理:先尝试查找第一个元素,若找不到则进入异常分支,再尝试查找第二个元素;如果两个元素都找不到,就进入最内层的异常分支输出提示。
内容的提问来源于stack exchange,提问作者yyiws
相关产品推荐
相关产品推荐

