Python中for循环的奇怪行为[关闭]

afdcj2ne  于 2023-06-04  发布在  Python
关注(0)|答案(1)|浏览(181)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我有一个很奇怪的问题。我正在用python编写一个webbot,我想浏览一个元素列表,看看它们是否包含一个M。为此,我编写了以下for循环:

elements = driver.find_elements(By.CLASS_NAME, "small-margin-top")
for element in elements:
    print(element.text)
    if 'M' in element.text:
        print("yes")
    else:
        print("no")

如果你看一下循环,你会认为文本首先是为每个元素打印的,然后是它是否包含M。但是,所有element.text都将首先打印,最后打印一个Yes。为什么?
更新:似乎问题出在元素列表上,它只包含1个对象。但我仍然不知道如何修复它。在官方的selenium文档中,他们和我一样使用它。

elements = driver.find_elements(By.TAG_NAME, 'p')

for e in elements:
    print(e.text)
7hiiyaii

7hiiyaii1#

所有的元素.text都被打印出来,因为for循环对每个元素都有效。
如果你想阻止的话。请导入元素.文本静态.条件'M'为真,所以输出是+问题是你定义了文本格式的元素,这会导致错误,因为你已经定义了它为文本
试试这些:-

elements = driver.find_elements(By.CLASS_NAME, "small-margin-top")
for element in elements.text:
    print(element) # will not throw any error
    if 'M' in element.text:
        print("yes")
    else:
        print("no")

注意:-你可以使用element.text.contains()方法不能在这里使用,因为它将返回“True”,并且由于if语句,在这种情况下它不应该是可执行的。

相关问题