使用Python的Selenium Webdriver经常无法启动Firefox浏览器,并且经常需要重试。通常单次或二次重试就足够了,所以我做了以下几点:
try:
self.driver = webdriver.Firefox()
except WebDriverException, e:
print "Unable to load profile, retrying"
try:
self.driver = webdriver.Firefox()
except WebDriverException, e:
print "Unable to load profile, retrying"
self.driver = webdriver.Firefox()
现在不再为我服务,因为它现在经常在浏览器启动之前进行3次或更多次重试。合并while
循环的最佳方法是什么,它会一直重试,直到浏览器成功加载(此时self.driver
将作为对象存在)?
注意:我知道可能会遇到无限循环,但为了提供建议,您可以忽略这一事实。
答案 0 :(得分:3)
如何在self.driver
循环之前将None
定义为while
,然后循环直到它不是None
?示例 -
self.driver = None
while not self.driver:
try:
self.driver = webdriver.Firefox()
except WebDriverException, e:
print "Unable to load profile, retrying"
答案 1 :(得分:2)
您可以使用python的else
子句。查看python's exception handling
while True:
try:
self.driver = webdriver.Firefox()
except WebDriverException, e:
print "Unable to load profile, retrying"
else:
break
答案 2 :(得分:0)
你说加载Firefox经常会失败是非常有趣的,它从来没有发生在我之前。我一直在运行Selenium测试一段时间了。您可能想要调查Firefox驱动程序失败的原因,是否需要更新?
我建议您对重试的时间实施限制。
numberOfRetry = 5
while (driver==None):
try:
driver = webdriver.Firefox()
except:
numberOfRetry-=1
if numberOfRetry <= 0:
logging.critical("Maximum number of retry reached")
break