这是我的一个用例文件,之前是在一个设备运行,大概的执行过程是循环读取指定目录的install.xlsx文件应用名称和包名,然后安装,打开,随机操作,打开,最后将结果汇总记录到一个xlsx表中,现在公共参数文件已实现从yaml文件读取N个设备SN和对应端口,然后建立N个appium服务链接,现在我要求根据实现的驱动个数,均分install.xlsx文件读取到的应用个数,例如A设备循环执行install.xlsx表中1-10行对应的应用安装,打开,随机操作,打开等一系列操作,B设备循环执行install.xlsx表中1-10行对应的应用安装,打开,随机操作,打开等一系列操作,其中install.xlsx文件第一行是列名称,从第二行开始才是有效内容,最后将N个设备执行的结果汇总记录到一个xlsx表中,请帮我修改用例文件内容,用例文件内容如下:
force_tags = ['APP-Level_1']
class APP_ThirdApp_Top3000_0003:
name = 'TOP3000兼容性挂测-APP_ThirdApp_Top3000_0003'
def setup(self):
global driver
driver = None
def teststeps(self):
device_name = "ADR-AN00"
platform_version = ADBHelper().get_android_version()
# 初始化计数变量
crash_count = 0
anr_count = 0
flower_screen_count = 0
black_screen_count = 0
white_screen_count = 0
try:
utils = AppiumAutomationUtils(device_name, platform_version, is_large_install=True)
driver = utils.driver
except Exception as e:
print(f"获取驱动时出错: {str(e)}")
return
# 读取Excel文件
excel_path = "resource/ThirdApp/xlsx/install.xlsx"
try:
workbook = openpyxl.load_workbook(excel_path)
sheet = workbook.active
except Exception as e:
print(f"读取 Excel 文件时出错: {str(e)}")
return
STEP(1, 'TOP3000兼容性挂测体系构建')
specified_row = 6
for row in sheet.iter_rows(min_row=6, max_row=specified_row, values_only=True):
if len(row) >= 3:
# 每一行数据顺序为:序号, 应用名称, 包名
serial_number = row[0]
app_name = row[1]
package_name = row[2]
print(f"序号: {serial_number}, 应用名称: {app_name}, 包名: {package_name}")
apk_path = f"resource/ThirdApp/apk/{package_name}.apk"
# 步骤1.安装应用
try:
for i in range(2):
driver.press_keycode(187)
try:
driver.find_element(By.ID,
'com.huawei.android.launcher:id/clear_all_recents_image_button').click()
except:
pass
driver.press_keycode(3)
except:
pass
install_result = False
try:
result = utils.install_app(apk_path)
if result == True:
install_result = True
else:
install_result = False
utils.generate_report_even_failed(app_name, package_name, crash_count, anr_count,
flower_screen_count, black_screen_count, white_screen_count,
"",
install_result, False, False)
continue
except:
pass
# 步骤2.启动应用
start_result = False
try:
start_success, crash_count, anr_count, flower_screen_count, black_screen_count, white_screen_count = utils.start_app(
package_name, app_name)
if start_success:
if crash_count <= 0:
start_result = True
print(f"应用启动成功")
else:
start_result = True
print(f"应用启动成功,但是发生闪退")
app_version = utils.get_app_version(package_name)
result = utils.uninstall_app(package_name)
if result == True:
uninstall_result = True
else:
uninstall_result = False
utils.generate_report_even_failed(
app_name, package_name, crash_count, anr_count,
flower_screen_count, black_screen_count, white_screen_count,
app_version, install_result, start_result, uninstall_result
)
continue
else:
print(f"启动应用{app_name}失败")
start_result = False
app_version = utils.get_app_version(package_name)
result = utils.uninstall_app(package_name)
if result == True:
uninstall_result = True
else:
uninstall_result = False
utils.generate_report_even_failed(
app_name, package_name, crash_count, anr_count,
flower_screen_count, black_screen_count, white_screen_count,
app_version, install_result, start_result, uninstall_result
)
continue
except :
continue
# 步骤3.去除隐私权限和协议
time.sleep(10)
texts = ["同意", '同意并继续', '同意并使用', '我同意','一键开启','允许', '继续', '接受', '跳过', '确认', '关闭', '知道了',
'我同意', '继续使用', '同意隐私政策', 'Agree', '下次提醒', '确定', 'Yes', 'OK', '我已阅读并同意', '同意并进入']
try:
time.sleep(10)
for i in range(2):
utils.click_element_by_texts(texts)
time.sleep(5)
print(f"点击元素成功")
except Exception as e:
print(f"点击元素时出错: {str(e)}")
# 步骤4.随机点击应用5分钟
print('开始进行随机操作')
try:
crash_count, anr_count, flower_screen_count, black_screen_count, white_screen_count = \
utils.random_operation(30, package_name,app_name)
print('随机操作已完成')
except Exception as e:
print(f"随机点击时出错: {str(e)}!!!")
pass
# 步骤5.应用退出启动循环三次
skip_current_operation = False
try:
(crash_count_restart, anr_count_restart, flower_screen_count_restart,
black_screen_count_restart, white_screen_count_restart) = utils.restart_app(3, package_name,app_name)
crash_count += crash_count_restart
anr_count += anr_count_restart
flower_screen_count += flower_screen_count_restart
black_screen_count += black_screen_count_restart
white_screen_count += white_screen_count_restart
except Exception as e:
print(f"应用退出启动循环出错: {str(e)}!!!")
pass
# 步骤6.卸载应用
app_version = ""
uninstall_result = ""
try:
app_version = utils.get_app_version(package_name)
utils.get_current_activity()
result = utils.uninstall_app(package_name)
if result == True:
uninstall_result = True
else:
uninstall_result = False
except Exception as e:
print(f"卸载应用时出错: {str(e)}!!!")
pass
# 步骤7.生成统计报告
try:
utils.generate_report(app_name, package_name, crash_count, anr_count, flower_screen_count,
black_screen_count, white_screen_count, app_version, install_result,
start_result, uninstall_result)
except Exception as e:
print(f"生成报告时出错: {str(e)}")
else:
print(f"Row {list(row)} is incomplete, skipping.")