首页 > 解决方案 > 如何等待列表元素被销毁?

问题描述

我想单击表中删除其行的所有按钮:

    try:
        elements = driver.find_elements(By.XPATH, '//table//button[@class="deleteEntry"]')
    except NoSuchElementException:
        print("      [NoSuch] Buttons not found")
        return False

    for element in elements:        
        element.click()
        # How to wait element is destroyed ?

我必须一一点击它们,然后一一等待它们被摧毁。我知道找到并点击它们,但我如何等待它们被破坏?

标签: pythonselenium

解决方案


我假设在您单击“删除”按钮后,某些元素会消失(不可见或从 DOM 中删除)。

您可以尝试显式等待。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# get the element here
# elem_to_disappear = ...

# click delete button
del_btn.click()

# wait until the element is gone
WebDriverWait(driver, 10).until(
    EC.invisibility_of_element(elem_to_disappear)
)

此处的进一步文档:https ://www.selenium.dev/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.expected_conditions.html#selenium.webdriver.support.expected_conditions.invisibility_of_element


推荐阅读