每当遇到异常时重新启动 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 重新启动程序。任何帮助将不胜感激,谢谢。
- 您可以简单地使用
os
模块来执行此操作:os.execv(sys.argv[0], sys.argv)
- 使用
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 秒
所以我有一个 selenium python 脚本,偶尔会 运行 在我的代码的不同部分出现以下错误:
Exception has occurred: WebDriverException
Message: unknown error: cannot determine loading status
from target frame detached
但是当我遇到这个错误时,如果我重新 运行 程序而不做任何更改,一切都会再次运行(所以我知道这是网站或网络驱动程序的问题)。同时,我想知道如果遇到 WebDriverException,是否有办法告诉 python 重新启动程序。任何帮助将不胜感激,谢谢。
- 您可以简单地使用
os
模块来执行此操作:os.execv(sys.argv[0], sys.argv)
- 使用
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 秒