Определить исчезла ли форма или нет при нажатии кнопки "Отмена"?

selenium
python
page-object
webdriver
Теги: #<Tag:0x00007fedbb9da548> #<Tag:0x00007fedbb9da110> #<Tag:0x00007fedbb9d9f30> #<Tag:0x00007fedbb9d9008>

(Дмитрий Золкин) #1

Подскажите пожалуйста в чем не правильно использование. В классе MainPage создал метод :

def is_form_close(locator)
 return EC.invisibility_of_element_located(locator)

В тесте хочу написать следующее:

def test_check_form_close:
 main_page = MainPage()
 main_page.click_button(Locator.button_save)
 assert main_page.is_form_close(Locator("здесь локатор элемента,который исчезает" )) == True

Хочу проверить что форма закрылась.
Почему метод никогда не возвращает True??
Возвращается все равно элемент из метода....Закрыта форма или открыта все равно....


(Дмитрий Золкин) #2

Все мне подсказали, что надо было писать так

def is_form_close(locator):
try:
var = WebdriverWait(self.driver, 3).until(EC.invisibiliti_of_element_located(locator))
return var
except TimeoutExciption:
return False


(kixiro) #3

Думаю, что лучше решить эту задачу в два действия.
1. найти элемент, который точно будет на странице и появится в любом случае позже чем проверяемый элемент.
2. в конструкции try except искать исчезнувший элемент с минимальным ожиданием.
Если искать сразу и таких проверок много по тестам, то при определении длинного таймаута тесты будут делаться долго, а при снижении, можно не дождаться окончательной загрузки страницы.