1. actions.py 2.add_trasition.py 3.check_upload.py
This commit is contained in:
@@ -185,6 +185,104 @@ class LoginPage:
|
||||
logging.error(f"登录过程中出错: {str(e)}")
|
||||
return False
|
||||
|
||||
def login_get_username(self, username=None):
|
||||
"""执行登录操作"""
|
||||
try:
|
||||
logging.info("正在执行登录操作...")
|
||||
|
||||
# 获取文本框中已有的用户名
|
||||
username_field = self.wait.until(
|
||||
EC.element_to_be_clickable((AppiumBy.ID, ids.LOGIN_USERNAME))
|
||||
)
|
||||
|
||||
existing_username = username_field.text
|
||||
# 日志记录获取到的已有用户名(若为空,也需明确记录,避免后续误解)
|
||||
if existing_username.strip(): # 去除空格后判断是否有有效内容
|
||||
logging.info(f"已获取文本框中的已有用户名: {existing_username}")
|
||||
else:
|
||||
logging.info("文本框中未检测到已有用户名(内容为空)")
|
||||
|
||||
# 将用户名写入全局变量中
|
||||
global_variable.GLOBAL_USERNAME = existing_username # 关键:给全局变量赋值
|
||||
|
||||
# 1. 定位密码输入框
|
||||
password_field = self.wait.until(
|
||||
EC.element_to_be_clickable((AppiumBy.ID, ids.LOGIN_PASSWORD))
|
||||
)
|
||||
|
||||
# 2. 清空密码框(如果需要)
|
||||
try:
|
||||
password_field.clear()
|
||||
# time.sleep(0.5) # 等待清除完成
|
||||
except:
|
||||
# 如果clear方法不可用,尝试其他方式
|
||||
pass
|
||||
|
||||
accounts = apis.get_accounts_from_server("68ef0e02b0138d25e2ac9918")
|
||||
|
||||
# 检查accounts是否为None,如果是则设为空列表
|
||||
if accounts is None:
|
||||
logging.warning("获取账户列表返回None,设为空列表")
|
||||
accounts = []
|
||||
|
||||
matches = [acc for acc in accounts if acc.get("username") == existing_username]
|
||||
password = None
|
||||
account_id = False
|
||||
if matches:
|
||||
password = matches[0].get("password")
|
||||
|
||||
# ✅ 关键:把 account_id 存入全局变量
|
||||
account_id = matches[0].get("account_id", False)
|
||||
# 只有 account_id 存在时才存全局
|
||||
if account_id is not False:
|
||||
global_variable.GLOBAL_ACCOUNT_ID = account_id
|
||||
logging.info(f"匹配到账号信息:username={existing_username}, account_id={account_id}")
|
||||
else:
|
||||
logging.warning(f"账号 {existing_username} 未返回 account_id,已设为 False")
|
||||
|
||||
|
||||
|
||||
password_field.send_keys(password)
|
||||
|
||||
# 4. 可选:隐藏键盘
|
||||
try:
|
||||
self.driver.hide_keyboard()
|
||||
except:
|
||||
pass
|
||||
|
||||
# 点击登录按钮
|
||||
max_retries = 3
|
||||
retry_count = 0
|
||||
|
||||
while retry_count < max_retries:
|
||||
login_btn = self.wait.until(
|
||||
EC.element_to_be_clickable((AppiumBy.ID, ids.LOGIN_BTN))
|
||||
)
|
||||
login_btn.click()
|
||||
logging.info(f"已点击登录按钮 (尝试 {retry_count + 1}/{max_retries})")
|
||||
|
||||
# 等待登录完成
|
||||
time.sleep(3)
|
||||
|
||||
# 检查是否登录成功
|
||||
if self.is_login_successful():
|
||||
logging.info("登录成功")
|
||||
return True
|
||||
else:
|
||||
logging.warning("登录后未检测到主页面元素,准备重试")
|
||||
retry_count += 1
|
||||
if retry_count < max_retries:
|
||||
logging.info(f"等待2秒后重新尝试登录...")
|
||||
time.sleep(2)
|
||||
|
||||
logging.error(f"登录失败,已尝试 {max_retries} 次")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"登录过程中出错: {str(e)}")
|
||||
return False
|
||||
|
||||
|
||||
|
||||
def is_login_successful(self):
|
||||
"""检查登录是否成功"""
|
||||
|
||||
Reference in New Issue
Block a user