我尝试编写一个try-except循环,如果网页无法加载,则会刷新网页。这是我到目前为止所做的:
driver.get("url")
while True:
try:
<operation>
except:
driver.refresh()
我想设置这个循环,这样如果5秒钟过去并且没有执行操作(可能是因为页面没有加载),它会尝试刷新页面。我们可以在except
中加入一个例外来捕捉时间延迟吗?
答案 0 :(得分:0)
我建议您阅读这篇文章Timeout function if it takes too long to finish。
它的要点是你可以使用信号来中断代码并引发错误,然后你会发现错误。
在你的例子中:
def _handle_timeout(signum,frame):
raise TimeoutError("Execution timed out")
driver.get("url")
signal.signal(signal.SIGALRM, _handle_timeout)
while True:
try:
signal.alarm(<timeout value>)
<operation>
signal.alarm(0)
except:
driver.refresh()
您可以使用以下代码段对此进行测试:
import time
import signal
def _handle_timeout(signum,frame):
raise TimeoutError("Execution timed out")
def test(timeout,execution_time):
signal.signal(signal.SIGALRM, _handle_timeout)
try:
signal.alarm(timeout)
time.sleep(execution_time)
signal.alarm(0)
except:
raise
else:
print "Executed successfully"
这会在execution_time > timeout
时出现错误。
正如Python signal don't work even on Cygwin?中所述,上述代码无法在Windows机器上运行。