我有以下代码:
def test_counter(self): try: if self.driver.find_element_by_id(self.counter).text == 'texttexttext': return True except NoSuchElementException and StaleElementReferenceException: self.fix_error() return False
我无法弄清楚为什么NoSuchElementException
或者StaleElementReferenceException
没有被抓住.
A and B
成为B
如果两个A
和B
是真值.所以NoSuchElementException and StaleElementReferenceException
成为StaleElementReferenceException
; 代码只捕获该异常.
>>> NoSuchElementException and StaleElementReferenceException
您需要用来except (NoSuchElementException, StaleElementReferenceException):
捕获两个异常.
改变这一行:
except NoSuchElementException and StaleElementReferenceException:
成:
except (NoSuchElementException, StaleElementReferenceException):
这就是原因:
>>> NoSuchElementException and StaleElementReferenceException StaleElementReferenceException
该and
检查,如果NoSuchElementException
是真的第一次.由于这种情况,它会检查是否StaleElementReferenceException
为真.因为它也是真的,它返回这个类.
使用pylint,它会警告你:
Exception to catch is the result of a binary "and" operation (binary-op-exception)