串起截图和上传

This commit is contained in:
2026-02-10 09:20:12 +08:00
parent ac4d41c70b
commit 2441031bb6
26 changed files with 18384 additions and 18432 deletions

View File

@@ -40,7 +40,7 @@ class UploadConfigPage:
except Exception as e:
self.logger.error(f"获取当前activity时出错: {str(e)}")
# 尝试返回到主页面(如果不在主页面)
# 尝试返回到主页面(如果不在主页面)保存上传
self.logger.info("尝试返回到主页面...")
max_back_presses = 5 # 最多按返回键次数
back_press_count = 0
@@ -932,6 +932,19 @@ class UploadConfigPage:
condition_button.click()
self.logger.info(f"成功点击{work_type_name}工况选择按钮")
# 检查是否有ListView如果没有就再次点击
try:
# 尝试查找ListView
self.wait.until(
EC.presence_of_element_located((AppiumBy.CLASS_NAME, "android.widget.ListView"))
)
self.logger.info(f"找到{work_type_name}工况选择的ListView")
except TimeoutException:
# 没有找到ListView再次点击按钮
self.logger.warning(f"未找到{work_type_name}工况选择的ListView再次点击按钮")
condition_button.click()
self.logger.info(f"再次成功点击{work_type_name}工况选择按钮")
# 选择主要的工况选项
if self._select_condition_option(workinfo_name):
self.logger.info(f"成功为{work_type_name}选择主要工况: {workinfo_name}")
@@ -1120,10 +1133,24 @@ class UploadConfigPage:
"com.bjjw.cjgc:id/point_workinfo_sp"
)
# 验证按钮是否可见和可用
if workinfo_button.is_displayed() and workinfo_button.is_enabled():
workinfo_button.click()
self.logger.info(f"已点击测点 {point_id} 的工况选择按钮")
self.logger.info(f"已点击测点 {point_id}次要工况选择按钮")
# 检查是否有ListView如果没有就再次点击
try:
# 尝试查找ListView
self.wait.until(
EC.presence_of_element_located((AppiumBy.CLASS_NAME, "android.widget.ListView"))
)
self.logger.info(f"找到{point_id}次要工况选择的ListView")
except TimeoutException:
# 没有找到ListView再次点击按钮
self.logger.warning(f"未找到{point_id}次要工况选择的ListView再次点击按钮")
workinfo_button.click()
self.logger.info(f"再次成功点击{point_id}次要工况选择按钮")
# 选择对应的工况选项
if self._select_minor_conditions_option(workinfoname, work_type):
@@ -1370,33 +1397,6 @@ class UploadConfigPage:
return points
def _set_single_point_work_condition(self, point_data: Dict, workinfo_name: str, work_type: str) -> bool:
"""为单个测点设置工况信息"""
try:
point_name = point_data.get('point_name')
self.logger.info(f"开始为测点 {point_name} 设置工况: {workinfo_name}")
# 使用保存的元素引用点击工况选择按钮
workinfo_element = point_data.get('workinfo_element')
if workinfo_element:
workinfo_element.click()
time.sleep(1) # 等待选项弹出
# 选择指定的工况
if self._select_condition_option(workinfo_name):
self.logger.info(f"成功为测点 {point_name} 设置工况: {workinfo_name}")
return True
else:
self.logger.warning(f"为测点 {point_name} 选择工况选项失败")
return False
else:
self.logger.warning(f"未找到测点 {point_name} 的工况选择按钮")
return False
except Exception as e:
self.logger.error(f"为测点 {point_name} 设置工况时出错: {str(e)}")
return False
def _select_condition_option(self, condition_name: str) -> bool:
"""选择具体的工况选项
@@ -1434,18 +1434,18 @@ class UploadConfigPage:
self.logger.debug("未找到列表项形式的工况选项")
# 方法3: 尝试点击屏幕特定位置(备选方案)
try:
# 获取屏幕尺寸
window_size = self.driver.get_window_size()
x = window_size['width'] // 2
y = window_size['height'] // 2
# try:
# # 获取屏幕尺寸
# window_size = self.driver.get_window_size()
# x = window_size['width'] // 2
# y = window_size['height'] // 2
# 点击屏幕中央(假设选项在中间)
self.driver.tap([(x, y)])
self.logger.info("通过点击屏幕中央选择工况")
return True
except Exception as e:
self.logger.debug(f"点击屏幕中央失败: {str(e)}")
# # 点击屏幕中央(假设选项在中间)
# self.driver.tap([(x, y)])
# self.logger.info("通过点击屏幕中央选择工况")
# return True
# except Exception as e:
# self.logger.debug(f"点击屏幕中央失败: {str(e)}")
self.logger.error(f"所有方法都无法选择工况选项: {condition_name}")
return False
@@ -1606,7 +1606,7 @@ class UploadConfigPage:
self.logger.info("开始等待上传完成")
# 等待弹窗显示
upload_list = WebDriverWait(self.driver, 10).until(
upload_list = WebDriverWait(self.driver, 2).until(
EC.presence_of_element_located((AppiumBy.ID, "android:id/customPanel"))
)
#等待弹窗消失
@@ -1862,13 +1862,13 @@ class UploadConfigPage:
return False
# 表达填写完成,点击"保存上传"并处理弹窗
if not self.click_save_upload_and_handle_dialogs():
self.logger.error("点击保存上传并处理弹窗失败")
return False
# # 表达填写完成,点击"保存上传"并处理弹窗
# if not self.click_save_upload_and_handle_dialogs():
# self.logger.error("点击保存上传并处理弹窗失败")
# return False
# # 暂不上传,使用返回按钮替代。
# self.driver.back()
# 暂不上传,使用返回按钮替代。
self.driver.back()
# 等待上传查看loading弹窗。没有就下一个