webdriver中,is_displayed()用来判断元素是否可见,返回True or False,但是如果元素不可见,就直接报错,这还怎么判断不可见的元素呢?

webdriver中,is_displayed()用来判断元素是否可见,返回True or False,但是如果元素不可见,就直接报错,这还怎么判断不可见的元素呢?

driver = webdriver.Chrome()

driver.get('https://www.baidu.com')

aa = driver.find_element_by_id('123')

if aa.is_displayed():
    print('1')
else:
    print('2')

driver.quit()

错误信息,定位不到元素:

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="123"]"}
  (Session info: chrome=93.0.4577.82)

这个应该是 id = 123 元素不存在, 所以你调用 is_displayed() 才出错。
这样试试 调用前,先判断 aa 是否为None

不可见还是本身这个id的元素就不存在?