python - 如何将列表与迭代结果进行比较?
问题描述
我有以下代码块:
Game_names = ['Game1', 'Game2', 'Game3', 'Game4', 'Game5']
for i in driver.find_elements_by_id("com.project.ProjectName:id/itemContainer"):
for title in i.find_elements_by_id("com.project.ProjectName:id/title"):
print('Game titles are: ' + title.text)
if Game_names == title.text:
print('Games titles are correct')
else:
print('Games titles are not correct')
我需要检查游戏名称是否正确。
任何人都可以帮助我吗?提前致谢。
解决方案
要检查两个可迭代对象是否相等,请使用all()
:
a = [0,1,2]
b = (0,1,2)
all(x == y for x, y in zip(a,b))
在您的情况下,您将不得不提取文本:
titles = i.find_elements_by_id("com.project.ProjectName:id/title")
all(x==y.text for x,y in zip(gameTitles, titles))
除非标题确实都在每个元素中,否则您可能想拆分它们:
titles = i.find_elements_by_id("com.project.ProjectName:id/title")
for title in titles:
assert all(x==y.strip() for x,y in zip(gameTitles, title.text.split())
请注意,如果顺序可能发生变化,您需要先排序,通过就地排序或迭代sorted(thing)
检查一个元素
如果您只想检查一个元素是否在列表中,只需执行以下操作:
for title in titles:
if title.text.strip() in GameTitles:
...
推荐阅读
- vector - 在 Rust 中迭代向量时何时使用引用?
- bash - shell如何删除具有几乎相同名称对的列表模式的第一个文件/文件夹
- google-sheets - 对 Google 表格中特定工作表的特定权限
- javascript - 从前端 Web 服务器调用 API 服务器
- python - 获取 botframework Python 中的活动对话框 ID - 具有多个对话框和 QnA Maker 的调度模型
- java - Gradle:使用两个不同的库但包名称相同的重复类错误
- javascript - 如何从javascript中的函数外访问函数中的变量
- javascript - 是否可以将 javascript 对象的 get 项定义为函数?
- java - onClick int 值更新到 Firebase 实时数据库
- react-native - React Native:成功登录后将电子邮件数组存储在 AsyncStorage 中