UI自动化测试程序的最大问题之一在于由于网络不稳定,从而造成页面元素不是不存在,而是还没有被调出来(虽然Selenium提供了显隐式等待,实际工程中会发现这两个方法是有缺陷的,并且好些浏览器根本就不支持)。在这里进行如下的优化。
案例:Retry优化
def find_element_by_id(self,driver,mystr):
try:
return driver.find_element_by_id(mystr)
except NoSuchElementException:
for i in range(2):
try:
time.sleep(2000)
return driver.find_element_by_id(mystr)
except NoSuchElementException:
print("尝试第"+str(i+1)+"次失败")
print("尝试第3次失败")
print("find_element_by_id 没有发现元素"+mystr)
当程序找不到元素的时候,等待2秒钟,继续获取,如果还是没有取到继续等待,在这里设置了3次的等待机会,如果没有报异常信息。