每当遇到异常时重新启动 python 程序

Restart python program whenever it encounters an exception

所以我有一个 selenium python 脚本,偶尔会 运行 在我的代码的不同部分出现以下错误:

Exception has occurred: WebDriverException
Message: unknown error: cannot determine loading status
from target frame detached

但是当我遇到这个错误时,如果我重新 运行 程序而不做任何更改,一切都会再次运行(所以我知道这是网站或网络驱动程序的问题)。同时,我想知道如果遇到 WebDriverException,是否有办法告诉 python 重新启动程序。任何帮助将不胜感激,谢谢。

  1. 您可以简单地使用 os 模块来执行此操作:os.execv(sys.argv[0], sys.argv)
  2. 使用 main() 函数作为程序的起点,并在需要重新启动时再次触发该函数。像
def foo1():
    return
def foo2():
    try:
        ...
    except:
        main()
def main():
    foo1()
    foo2()
if __name__ == "main":
    main()

您可以尝试 os.execv(),根据 here,它可以重新启动 python 脚本,但您需要使用此 C-like 清理缓冲区等函数 sys.stdout.flush()

try:
    <your block of code>
except WebDriverException:
    print(<Your Error>)

    import os
    import sys

    sys.stdout.flush()
    os.execv(sys.argv[0], sys.argv)

如果因为没有找到某个标签而出现错误,您可以稍等

element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )

或最坏情况

browser.implicitly_wait(5)

time.sleep(5)

等待元素出现 5 秒