【发布时间】:2020-11-25 09:25:07
【问题描述】:
我很困惑检查元素是否存在的最佳和正确方法?使用try-except 或if-else?尝试查找元素时,两者有什么区别和优缺点?
def find_logo():
return driver.find_elements(By.CSS_SELECTOR, ".navbar-brand [src='/logo/logo.svg']")
if find_logo():
print("Found the logo")
else:
print("Cannot find the logo")
所以用 try 会得到相同的结果,除了:
def find_logo():
return driver.find_element(By.CSS_SELECTOR, ".navbar-brand [src='/logo/logo.svg']")
try:
find_logo()
print("Found the logo")
except NoSuchElementException:
print("Cannot find the logo")
两者的工作方式似乎相同,但哪种方法是正确的?
【问题讨论】:
-
问题本身不正确,因为在第一种情况下
find_logo返回list,在第二种情况下 - 单个 WebElement。所以它不是关于什么方法是正确的,而是用户想要得到什么输出 -
哦,是的,问题是如果它是
find_element并且徽标图像不存在,那么它总是会返回错误,无法找到这样的元素,并且不会到达 else 语句。 -
Sooo...显然,在这种情况下您需要使用
try/except
标签: python selenium if-statement try-catch findelement