首页 > 解决方案 > 如何将列表与迭代结果进行比较?

问题描述

我有以下代码块:

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')

我需要检查游戏名称是否正确。

任何人都可以帮助我吗?提前致谢。

标签: pythonandroidseleniumloopsselenium-webdriver

解决方案


要检查两个可迭代对象是否相等,请使用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:
        ...

推荐阅读