【问题标题】:How to make a loop that keeps cheking if theres a certain class如何制作一个循环来不断检查是否有某个类
【发布时间】:2022-01-26 17:47:12
【问题描述】:

您好,我正在尝试创建一个循环,不断搜索带有“购买”的类,如果发现它需要刷新,直到它再也找不到它,然后它运行其余代码。我正在使用 selenium 和 python 帮助将不胜感激。提前致谢

foundButton = False
    while not foundButton:
        driver.find_element(By.CLASS_NAME, "buy")    
        if (driver.find_element(By.CLASS_NAME, "buy")):
            time.sleep(1)
            driver.refresh()
            driver.find_element(By.CLASS_NAME, "buy")
        else:
            foundButton = True

【问题讨论】:

  • 这听起来像X-Y problem。与其寻求解决问题的帮助,不如编辑您的问题并询问实际问题。你想做什么?
  • @DebanjanB 我编辑了这个问题,感谢您告诉我。

标签: python selenium


【解决方案1】:

虽然不是true 是实际的循环条件。该值必须为真。

while(condition) 或 if(condition) 意味着如果 condition 评估为 true,则执行操作。而不是意味着如果条件为假就这样做。但是因为您的初始值为 false,所以 not 将其否定为 true,最终循环执行,因为 falseButton 为 false,并且循环条件始终解释为 true。

我总是建议不要使用boolean 值来控制循环条件,因为特别是在 python 中,很容易将 outer 逻辑与 inner 逻辑混淆。我的意思是

while (condition)
while [not (condition)]

无论结果是什么,为了继续进行,累积的结果必须始终为真。

【讨论】:

  • 当然你的意思是它必须是假的才能循环
  • 是的。我想说的是,无论什么(条件)必须始终评估为真。
  • 前面的 not 简单地否定了它。
  • 啊现在我明白你的意思了。当然,整个命题必须评估为真。
  • 抱歉,我无法正确表达。请编辑我的abswer以改进它。谢谢。
猜你喜欢
  • 2019-05-23
  • 2021-06-30
  • 2021-10-25
  • 2014-09-12
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多