程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了等到元素中的文本更改大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决等到元素中的文本更改?

开发过程中遇到等到元素中的文本更改的问题如何解决?下面主要结合日常开发的经验,给出你关于等到元素中的文本更改的解决方法建议,希望对你解决等到元素中的文本更改有所启发或帮助;

请建议 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()
        @R_254_10586@l_time = Now-start_time
        print(f"@R_254_10586@l time for text to change {@R_254_10586@l_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. - 您可以通过更改开发工具中的按钮文本来测试上面的代码片段。

,

你可以循环直到文本变成你想要的值

def wait_for_text(driver):  
    init_text = "init text"
    retry = 1
    while(driver.find_elemenT_By_id(".") != init_text ):
        retry += 1
    print(driver.find_elemenT_By_id(".").text)
    print("number of tries: " + retry)

大佬总结

以上是大佬教程为你收集整理的等到元素中的文本更改全部内容,希望文章能够帮你解决等到元素中的文本更改所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: