如何将预设列表与迭代获取的结果对比以验证游戏名称正确性
代码修正方案
原有代码问题
- 缩进错误:if 语句缩进不符合Python语法规范,运行会直接报错
- 逻辑错误:直接将完整列表和单个字符串做相等判断,判定逻辑永远不成立
- 流程缺陷:没有汇总采集到的所有标题就单条对比,无法完成整体校验需求
修正后代码(顺序匹配场景)
如果要求采集到的游戏标题顺序和预设列表完全一致,使用以下代码:
Game_names = ['Game1', 'Game2', 'Game3', 'Game4', 'Game5'] # 先收集所有页面获取到的游戏标题 collected_titles = [] for item in driver.find_elements_by_id("com.project.ProjectName:id/itemContainer"): for title in item.find_elements_by_id("com.project.ProjectName:id/title"): title_content = title.text print('当前采集到的游戏标题:' + title_content) collected_titles.append(title_content) # 整体校验 if collected_titles == Game_names: print('✅ 所有游戏标题校验通过,顺序符合预期') else: print('❌ 游戏标题校验不通过') # 输出详细错误信息 if len(collected_titles) != len(Game_names): print(f"数量不匹配:预期{len(Game_names)}个,实际采集到{len(collected_titles)}个") else: for idx, (expected, actual) in enumerate(zip(Game_names, collected_titles)): if expected != actual: print(f"第{idx+1}个标题不匹配:预期「{expected}」,实际「{actual}」")
修正后代码(无需匹配顺序场景)
如果只要求所有预设游戏名称都存在、没有多余或缺失,不需要对应顺序,将校验部分替换为以下代码即可:
if sorted(collected_titles) == sorted(Game_names): print('✅ 所有游戏标题校验通过,无需匹配顺序') else: print('❌ 游戏标题校验不通过') print(f"缺失的标题:{list(set(Game_names) - set(collected_titles))}") print(f"多余的标题:{list(set(collected_titles) - set(Game_names))}")
内容的提问来源于stack exchange,提问作者Claudaette
相关产品推荐
相关产品推荐

