Подождите, пока один элемент в списке не исчезнет

#python #selenium #selenium-webdriver

#python #селен #selenium-webdriver

Вопрос:

У меня есть таблица, в которой каждая строка имеет столбец с флажком. Если я сниму флажок, он скроет строку. Я хочу подождать, пока эта строка не исчезнет.

То, что я нашел, предназначено для случаев, когда у меня есть конкретный локатор EC.invisibility_of_element_located , но в этом случае, поскольку это строки, каждая строка имеет один и тот же класс, и нет никакого смысла указывать идентификатор для каждой строки.

Я хотел бы избежать чего-то вроде time.sleep(2)

Спасибо

Ответ №1:

Вы можете подождать, пока количество списков не уменьшится на 1:

 from selenium.webdriver.support.ui import WebDriverWait

_list = driver.find_elements_by_xpath('//tr')
list_count = len(_list)

WebDriverWait(driver, 10).until(lambda driver: len(driver.find_elements_by_xpath('//tr')) == list_count - 1)
  

Это должно сработать, если строка физически удалена из DOM. В случае, если он становится скрытым, используйте что-то вроде driver.find_elements_by_xpath('//tr[not(@hidden)]') поиска видимых строк