我需要限制函数执行时间,所以我跟着Josh Lee 回答
try:
with time_limit(10):
long_function_call()
except TimeoutException, msg:
print "Timed out!"
其中 long_function_call() 是一个 selenium webdriver 函数,它与页面交互并执行一些操作。
def long_function_call(self, userName, password):
driver = self.initDriver()
try:
driver.get("https://yyyy.com")
time.sleep(2)
if not self.isHttps(driver.current_url):
isHttps = False
driver.find_element_by_id("i015516").clear()
time.sleep(5)
if 'https://yyy.com' not in driver.current_url:
self.raiseFailedToLogin('yyy')
except Exception as e:
self.raiseException('yyy',e)
finally:
driver.close()
driver.quit()
return 'yyyy'
在大多数情况下,当函数执行时间超过信号超时时,发送信号并停止方法,但在某些情况下,方法超过超时并没有停止。似乎 selenium 挂了。(firefox 是打开的,没有做任何事情)。
在这些情况下,我尝试暂停调试器,但暂停并没有告诉我它挂在哪里。如果我关闭 selenium firefox 而不是在此方法上停止调试暂停:
_read_status [httplib.py:366]
begin [httplib.py:407]
getresponse [httplib.py:1030]
do_open [urllib2.py:1180]
http_open [urllib2.py:1207]
def _read_status(self):
# Initialize with Simple-Response defaults
line = self.fp.readline()
if self.debuglevel > 0: ################Hang here
知道为什么在某些情况下用硒发出警报信号不起作用吗?(我不认为他们抓住中断)。