gpt4 book ai didi

python - 等待元素中的文本发生更改

转载 作者:行者123 更新时间:2023-12-02 18:50:32 26 4
gpt4 key购买 nike

请建议 Selenium 是否有一个好的选项可以等待元素内的文本发生更改。条件:

  • 页面不会自动重新加载
  • 我需要的文本元素会动态重新加载
  • 更新此数据所需的时间未知
  • 预期文本未知。它是一个时间戳。

我编写了一个方法,每 1 秒(或我设置的任何时间)检查一次,并在更改时获取值。但我认为可能有一些更好的选择。我尝试避免使用 time.sleep,但在当前情况下,这是我唯一的选择。注意,该文本即使在 5 分钟后也可能会发生变化,因此我需要调整重试次数 retriestime.sleep()另外,我使用 print 只是为了调试。

def wait_for_text(driver):  
init_text = "init text"
retry = 1
retries = 120
start_time = time.time()
while retry <= retries:
time.sleep(1)
field_text = driver.find_element_by_id("my_id").text
if field_text != init_text:
break
retry += 1
now = time.time()
total_time = now-start_time
print(f"Total time for text to change {total_time}")
print(f"Final field value: {field_text}")

最佳答案

你可以这样做:

driver.get("https://stackoverflow.com")
init_text = "Log in"
from selenium.webdriver.support.wait import WebDriverWait
waiter = WebDriverWait(driver=driver, timeout=120, poll_frequency=1)
waiter.until(lambda drv: drv.find_element_by_class_name("login-link").text != init_text)
print("Success")
driver.quit()

所以你基本上是在等待一个元素停止等于给定值。

P.S. - 您可以通过更改开发工具中的按钮文本来测试上面的代码片段。

关于python - 等待元素中的文本发生更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66859094/

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