Пишу на питоне парсер для сайта, на котором элементы прогружаются как попало, и по времени и по последовательности. Для получения искомого элемента использую конструкцию вида:
data = WebDriverWait(driver, 100000).until(
EC.visibility_of_element_located((By.ID, "id_name"))
)
Большое время ожидания связанно с тем, что прогрузка элемента может занимать как несколько секунд, так и минут семь. Все хорошо, пока не возникает третья ситуация, где на страницу прогружается элемент с сообщением об отсутствии запрашиваемых данных:
nodata = WebDriverWait(driver, 100000).until(
EC.visibility_of_element_located((By.XPATH, "xpath_text"))
)
Загрузка этого элемента так же может занимать непредсказуемое время.
Предполагается обработка таким образом большого массива страниц и желательно делать это быстро. То есть, ждать окончания ожидания от двух WebDriverWait
не вариант. Вообще, нужно решение, никак не привязанное ко времени ожидания, только к реальному появлению элементов.
Существует какой-то способ одновременно ожидать появление одного из двух элементов? Я думал о решении с помощью threading, но оно, очевидно, не может работать.