我正在使用python3中的Selenium webdriver。当驱动程序到达某个页面时,如果存在具有类shiftUp
的某个类元素,我想打印响应并在该点停止执行。目前,我正在这样做如下:
flag = 0
try:
error_source_file = driver.find_element_by_class_name("shiftUp")
flag = 1
except:
pass
if flag:
print("RESPONSE")
sys.exit()
我想要一个正确的方法。
使用 else
子句:
try:
error_source_file = driver.find_element_by_class_name("shiftUp")
except NoSuchElementException:
pass
else:
print("RESPONSE")
sys.exit()
对于不引发错误的情况,它会触发:https://docs.python.org/3/tutorial/errors.html#handling-exceptions:
try … except
语句有一个可选的 else 子句,该子句(如果存在(必须跟在所有 except 子句后面。它对于在 try 子句未引发异常时必须执行的代码很有用。
和
使用
else
子句比向try
子句添加其他代码更好,因为它可以避免意外捕获受try … except
语句保护的代码未引发的异常。
出于类似的原因,我建议只捕获NoSuchElementException
:您不想捕获您不打算捕获的错误。
为什么不:
try:
error_source_file = driver.find_element_by_class_name("shiftUp")
print("RESPONSE")
sys.exit()
except NoSuchElementException:
pass
如果 find_element
方法引发异常,则不会执行 error_source_file
后面的行。
注意:考虑预先确定要捕获的异常类型(例如:
except IndexError:
(,否则您可能会静默错误,这真的很糟糕。