【问题标题】:Print statement only once in a while loop (Python, Selenium) [closed]在while循环中仅打印一次语句(Python,Selenium)[关闭]
【发布时间】:2021-08-07 02:48:01
【问题描述】:
driver.get("Link of product site.")
while "Not available right now." in driver.page_source:
print("Not available right now, reloading site until it is available..")
driver.refresh()
sleep(45)

else:
print("It is available! Gonna order it now..")

这里的问题是它每 45 秒给我很多打印语句。它怎么可能只给出一次声明“现在不可用,重新加载站点直到它可用..”直到 else 声明为真?

(用 Python,Selenium 编写)

感谢您的帮助!

【问题讨论】:

  • 代码不起作用;它缺少一些碎片;没有上下文。请read how to ask a question
  • 好的,改了。希望现在清楚了。

标签: python selenium


【解决方案1】:

您只需要更改代码的顺序,不需要if..else 语句。让它默认为“检查可用性...”,然后启动循环,该循环将每 45 秒刷新一次页面,直到您指定的文本从 driver.page_source 消失。

driver.get("Link of product site.")
print("Checking availability...")
while "Not available right now." in driver.page_source:
    sleep(45)
    driver.refresh()
    

print("It is available! Gonna order it now..")

如果它立即可用,它只会将它们一个接一个地打印出来..

Checking availability...
It is available! Gonna order it now..

否则它们之间会有时间延迟。

如果您想添加时间戳以便知道需要多长时间才可用,请使用:

import datetime

current_time = datetime.datetime.now()

driver.get("Link of product site.")
print("Checking availability...")
print(current_time)
while "Not available right now." in driver.page_source:
    sleep(45)
    driver.refresh()
    

print("It is available! Gonna order it now..")
print(current_time)

【讨论】:

  • 刷新前最好先休眠,否则页面会视觉更新但控制台输出会延迟。
  • @Niloct。好点子。更新代码以反映
  • 非常感谢您的帮助!