折腾:
【未解决】百度OCR自动化操作游戏率土之滨从首充豪礼弹框页到真正支付页
期间,经过调试
之前的:
isRealPay = self.isRealPayPopupPage_multipleRetry()
返回竟然,不是以为的false,而是None

所以先去解决这个问题
发现还真的是之前函数有问题
utils/common_utils.py
def multipleRetry(functionInfoDict, maxRetryNum=5, sleepInterval=0.1, isShowErrWhenFail=True, isRespFullRetValue=False): 。。。 if doSuccess: if isRespFullRetValue: finalReturnValue = respValue else: finalReturnValue = doSuccess break 。。。
去改为:
if isRespFullRetValue: finalReturnValue = respValue else: finalReturnValue = doSuccess if doSuccess: break
然后重新调试看看
然后就可以了:

返回False,而不是None了
最后完整代码:
def multipleRetry(functionInfoDict, maxRetryNum=5, sleepInterval=0.1, isShowErrWhenFail=True, isRespFullRetValue=False): """do something, retry if single call failed, retry mutiple time until max retry number Args: functionInfoDict (dict): function info dict contain functionCallback and [optional] functionParaDict maxRetryNum (int): max retry number sleepInterval (float): sleep time (seconds) of each interval when fail isShowErrWhenFail (bool): show error when fail if true isRespFullRetValue (bool): whether return full return value of function call Returns: isRespFullRetValue=False: bool isRespFullRetValue=True: bool / tuple/list/... Raises: """ finalReturnValue = None doSuccess = False functionCallback = functionInfoDict["functionCallback"] functionParaDict = functionInfoDict.get("functionParaDict", None) curRetryNum = maxRetryNum while curRetryNum > 0: if functionParaDict: # doSuccess = functionCallback(**functionParaDict) respValue = functionCallback(**functionParaDict) else: # doSuccess = functionCallback() respValue = functionCallback() doSuccess = False if isinstance(respValue, bool): doSuccess = bool(respValue) elif isinstance(respValue, tuple): doSuccess = bool(respValue[0]) elif isinstance(respValue, list): doSuccess = bool(respValue[0]) else: Exception("multipleRetry: Not support type of return value: %s" % respValue) if isRespFullRetValue: finalReturnValue = respValue else: finalReturnValue = doSuccess if doSuccess: break time.sleep(sleepInterval) curRetryNum -= 1 if not doSuccess: if isShowErrWhenFail: functionName = str(functionCallback) # '<bound method DevicesMethods.switchToAppStoreSearchTab of <src.AppCrawler.AppCrawler object at 0x1053abe80>>' logging.error("Still fail after %d retry for %s", maxRetryNum, functionName) # return doSuccess return finalReturnValue
另外去更新之前的:
Python常用代码段
中的代码:
multipleRetry
已更新:
