Привет.
Подскажите, как дождаться присутствия аттрибута у элемента?
Как дождаться присутсвия атрибута у элемента?
Artem_Horuzhij1
(Артем Хоружий)
#1
Dmitry_Astanin
(Dmitry Astanin)
#2
Если селенид, то можно через conditions.
Если голый драйвер, то ретраер какой нибудь написать. Ну т.е. чекать в цикле на протяжении какого либо времени раз в какое либо время, что аттрибут появился.
Maxim1
(Maxim Andryushchenkov)
#4
Могу на Python. А вы можете переписать себе
def wait_for(condition, timeout=300, interval=5, error_message=None):
raise_time = int(time() + timeout)
while int(time()) < raise_time:
if condition():
return
sleep(interval)
raise TimeoutError(error_message)
condition - лямбда
Dmitry_Astanin
(Dmitry Astanin)
#5
Можно awaitility заюзать, дабы покрасивше и более модно было))
Код писать сейчас не оч удобно глянь тут много примеров
ну а как аттрибут получить тут - https://stackoverflow.com/questions/20645013/how-to-verify-an-attribute-is-present-in-an-element-using-selenium-webdriver
Ostap_Oleksyn
(Остап Олексин)
#6
Используйте explicit wait:
new WebDriverWait(driver, 10).until(ExpectedConditions.attributeToBeNotEmpty(webElement, "attribute name"));
asolntsev
(asolntsev)
#7
Используйте Selenide. Решение в одну строку:
$("#elem").shouldHave(attribute("attrName"));