Здравствуйте, мне необходимо проверить что определенный элемент присутствует на веб-странице.
Нахожу элемент следующим образом:
Element = driver.find_element_by_id('text')
Проверку сделал следующим образом:
self.assertTrue("id = text", Element)
Но, мне сказали что это не правильно, потому что этот код ничего не проверяет: первый параметр метода это и есть проверка, а второй просто сообщение, которое выводится при падении.
После этого я нашел как проверить наличие элементов следующим методом:
from selenium.common.exceptions import NoSuchElementException
def check_exists_by_id(id):
try:
webdriver.find_element_by_id(id)
except NoSuchElementException:
return False
return TrueТеперь я вообще запутался. Скажите пожалуйста, каким методом все таки нужно производить проверку наличия элемента на странице? И все таки, возможно ли это сделать через assert.True()?
Например, найти все через
my_elems = webdriver.find_elements_by_xpath(".//*[@id='text']")
if len(my_elems) == 0:
print("Элемента нет")
Или например, подождать:
try:
wait.until(EC.presence_of_element_located((By.ID, 'text'))) или visibility_of_element_located или element_to_be_clickable и т.д.
except TimeoutException:
print("Элемента нет")