Commit 5f045b83 by baiquan

优化登录异常处理方式

parent 51e05f26
...@@ -89,7 +89,7 @@ async def openBrowser(browser_id: str = "", timeout: int = 120): ...@@ -89,7 +89,7 @@ async def openBrowser(browser_id: str = "", timeout: int = 120):
return await sendRequest("POST", url=url, json_data=data, **{'timeout': timeout}) return await sendRequest("POST", url=url, json_data=data, **{'timeout': timeout})
async def closeBrowser(browser_id: str = ""): async def closeBrowser(browser_id):
""" """
关闭浏览器 关闭浏览器
:param browser_id: :param browser_id:
......
import time import time
from DrissionPage.errors import *
from DrissionPage import Chromium from DrissionPage import Chromium
from DrissionPage._functions.by import By from DrissionPage._functions.by import By
from loguru import logger from loguru import logger
...@@ -44,31 +44,33 @@ async def page_login(browser_id): ...@@ -44,31 +44,33 @@ async def page_login(browser_id):
await closeBrowser(browser_id) await closeBrowser(browser_id)
time.sleep(3) time.sleep(3)
except Exception as e: except Exception as e:
logger.error(f"启动浏览器错误-->{e}") logger.error(f"{browser_id}启动浏览器错误-->{e}")
time.sleep(3) time.sleep(3)
if open_count == 0: if open_count == 0:
raise AppError("启动浏览器失败") raise AppError(f"{browser_id}-->启动浏览器失败")
tab.get('https://fxg.jinritemai.com/login/common') tab.get('https://fxg.jinritemai.com/login/common')
tab.listen.start(["account_login/v2/", "captcha/verify", "/aff/check_login"]) tab.listen.start(["account_login/v2/", "captcha/verify", "/aff/check_login"])
login_res = listen_check_login(tab) login_res = listen_check_login(tab)
logger.info(f"当前页面是否登录-->{login_res}") logger.info(f"{browser_id}当前页面是否登录-->{login_res}")
if not login_res: if not login_res:
retry = 0 retry = 0
while True: while True:
if retry > 3: if retry >= 3:
raise AppError("重试多次,登录失败") tab.close()
raise AppError(f"重试多次,登录失败")
if retry == 4: if retry == 4:
raise AppError(f"{browser_id}-->未找到账号信息") tab.close()
raise AppError(f"未找到账号信息")
retry += 1 retry += 1
try: try:
em = "邮箱登录" em = "邮箱登录"
doc_loaded = tab.wait.doc_loaded(timeout=10) doc_loaded = tab.wait.doc_loaded(timeout=10)
eles_loaded = tab.wait.eles_loaded(em) eles_loaded = tab.wait.eles_loaded(em)
if not doc_loaded or not eles_loaded: if not doc_loaded or not eles_loaded:
continue raise AppError(f"页面或元素未加载完成({retry})")
click_button(tab, em) # 点击邮箱登录按钮 click_button(tab, em) # 点击邮箱登录按钮
email_input = tab.ele("@title=请输入邮箱") email_input = tab.ele("@title=请输入邮箱")
password_input = tab.ele("@title=密码") password_input = tab.ele("@title=密码")
...@@ -86,6 +88,12 @@ async def page_login(browser_id): ...@@ -86,6 +88,12 @@ async def page_login(browser_id):
click_button(tab, ".account-center-submit") # 点击登录按钮 click_button(tab, ".account-center-submit") # 点击登录按钮
listen_login(tab) listen_login(tab)
break break
except ElementNotFoundError as e:
if tab.title == "首页":
logger.info(f"{browser_id}-->当前页面为首页,已登录")
break
else:
logger.error(f"{browser_id}-->{e}")
except Exception as e: except Exception as e:
logger.error(f"{browser_id}-->{e}") logger.error(f"{browser_id}-->{e}")
tab.close() tab.close()
...@@ -107,7 +115,7 @@ def listen_login(tab): ...@@ -107,7 +115,7 @@ def listen_login(tab):
def listen_check_login(tab): def listen_check_login(tab):
check_result = False check_result = False
for packet in tab.listen.steps(timeout=5): for packet in tab.listen.steps(timeout=5):
if '/aff/check_login' in packet.url: if '/aff/check_login' in packet.url and packet.response.body:
login_res = packet.response.body login_res = packet.response.body
logger.info(f'获取确认登录数据:{login_res}') logger.info(f'获取确认登录数据:{login_res}')
if login_res['description'] == '' and login_res['deputy_has_login'] == True and login_res['error_code'] == 0 : if login_res['description'] == '' and login_res['deputy_has_login'] == True and login_res['error_code'] == 0 :
......
...@@ -182,7 +182,11 @@ async def run(): ...@@ -182,7 +182,11 @@ async def run():
try: try:
tasks = await get_task(upload_data) tasks = await get_task(upload_data)
# tasks = {"data": [{"app_name": "admin", "type": 1, "browser_type": 1}]} # tasks = {"data": [{"app_name": "admin", "type": 1, "browser_type": 1}]}
# tasks = {"data": [{"app_name": "admin", "type": 1, "browser_type": 1, "browser_id": "1075653218"}]} # tasks = {"data": [{"app_name": "admin", "type": 1, "browser_type": 1, "browser_id": "1075653218"},
# {"app_name": "admin", "type": 1, "browser_type": 1, "browser_id": "1075653218"},
# {"app_name": "admin", "type": 1, "browser_type": 1, "browser_id": "1075653218"},
# {"app_name": "admin", "type": 1, "browser_type": 1, "browser_id": "1075653218"},
# {"app_name": "admin", "type": 1, "browser_type": 1, "browser_id": "1075653218"},]}
except: except:
logger.error('获取任务失败') logger.error('获取任务失败')
return return
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment