【问题标题】:How to compare a list with the result from an iteration?如何将列表与迭代结果进行比较?
【发布时间】:2021-09-30 14:33:09
【问题描述】:

我有以下代码块:

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

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

谁能帮我解决这个问题?提前致谢。

【问题讨论】:

  • 预期输出是什么?请将其添加到您的帖子中。
  • 你要检查title.text是否在列表中Game_names
  • 嗨,~输出:游戏标题是:Game1 Game2 ... 游戏标题是正确的

标签: python android selenium loops selenium-webdriver


【解决方案1】:

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

【讨论】:

  • 设法以某种方式使用:for title in titles: if title.text.strip() in GameTitles: 其他的返回不同的错误:没有文本属性,断言错误..我会使用这个谢谢!
猜你喜欢
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多