gpt4 book ai didi

python - 编写一个等待并监听直到满足条件的 Python 函数,类似于 WebDriverWait().until()

转载 作者:行者123 更新时间:2023-12-01 08:24:27 25 4
gpt4 key购买 nike

通常,我想编写一个等待条件满足的函数。

具体来说,我希望它等到一个元素存在或不存在,所以当这个元素存在时,我希望我的脚本立即知道并继续。

更详细地说,在“while True”循环中,我希望我的脚本等到元素存在的那一刻(满足更一般的条件),然后打印该元素的显示时间,然后它再次等待,直到该元素消失,然后打印消失的时间。并重复。

这意味着类似于selenium中使用的“WebDriverWait().until()”,但我想在python中编写自己的函数并且不使用第三方库,以便我即使不使用 selenium 或任何其他库也可以使用它。

while true:
element = WebDriverWait(driver, 28800).until(
EC.visibility_of_element_located(
(By.XPATH, "//span[@title = 'online']")))
print(online_time)

element = WebDriverWait(driver, 28800).until(
EC.invisibility_of_element_located(
(By.XPATH, "//span[@title = 'online']")))
print(offline_time)

我已经搜索过,我发现了一堆答案,建议使用带条件的 sleep() 函数、wait() 函数,或进行某种编码listener,还谈到了我实在不明白的轮询概念

不幸的是,我尝试使用 sleep() 函数,但我无法编写任何值得在此处发布的代码来尝试实现我想要的行为,因为我不知道元素何时将显示,将显示多少时间存在以及何时会再次消失。所以我认为,使用精确的秒数是没有值(value)的。

我希望你能帮我写它,或者至少引导我走上正确的道路。

欢迎对我所讨论的概念进行任何解释。 PS:我是一名初学者程序员。

最佳答案

按照您的思考方式,这可能很难概括。通常,您不想等待事情。最好做其他事情或者什么都不做。 Python 有一个完整的库专门用于处理此类事情。它叫做 asyncio .

从概念上讲,您只需要一个函数来告诉您某个操作是否完成,以及一个 while 循环。

import time    
while not action_is_complete():
sleep(10)

这将持续进行,直到 action_is_complete() 返回 true。然后你的程序将继续执行。

关于python - 编写一个等待并监听直到满足条件的 Python 函数,类似于 WebDriverWait().until(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54374195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com