【问题标题】:Selenium to check if element has been visible for x amount of secondsSelenium 检查元素是否可见 x 秒
【发布时间】:2019-06-16 11:30:55
【问题描述】:

由于隐私问题,我无法分享我正在处理的代码,但我需要它相当简单,我的代码不应该是必需的。

我有一个元素的 XPath。我想检查该元素可见的秒数,但我不知道如何。

这样的伪代码示例是:

while True:
    if driver.find_element_by_xpath('//@[id=element]').HasBeenVisibleFor(20):
        break
    else:
        doStuff()

请帮忙!

【问题讨论】:

    标签: python selenium chromium


    【解决方案1】:

    您可以使用显式等待元素的可见性和不可见性并获取它们之间的持续时间。

    wait = WebDriverWait(driver, 20)
    wait.until(EC.visibility_of(driver.find_element_by_xpath('//@[id=element]')))
    t1 = time.time()
    
    wait.until(EC.invisibility_of_element(driver.find_element_by_xpath('//@[id=element]')))
    t2 = time.time()
    
    print(t2-t1)
    

    要使用显式等待,您需要导入以下内容

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    

    【讨论】:

      【解决方案2】:

      如果你在 poll 方法中添加一个 element.isDisplayed 怎么样,每秒检查 X 秒

      counter=0
      
      while element.is_displayed():
        counter++
        time.sleep(1)
      

      【讨论】:

      • 你能分享一个例子吗? poll方法我不熟悉
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 2021-03-19
      • 2021-02-19
      • 2012-07-08
      相关资源
      最近更新 更多