в тесте вызываю assertEqual(main_page.get_text_from_table,“Список с которым сравниваю”)
Перед методом приходиться ставить sleep как я понимаю таблица не успевает появится и тест говорит, что пустой список не равен списку.
Почему не работает строка EC.presence_of_all_elements_located(locator) она же должна ждать пока не появится элемент в DOM(или я не правильно понимаю???). В качестве локатора передаю ячейку из таблицы, которая должна появится.
Так не работает
Да потому что вы ждете (как я понял), корень таблицы, а ячейки - нет, вот и выходит table появилась а я чейки нет, вот вам и пустой список.
Второе. юзайте таки visible, на таблицу, а на ячейки located (в принципе если контейнер div хватит и первого)
Вот так почему то работает, но мне не нравится второй аргумент не знаю почему и сам метод тоже не нравится EC.text_to_be_present_in_element(locator, text)
В питоне не силён, но, исходя из логики селениума, вижу следующие варианты:
1). Presense != Clickable. То есть, элемент уже может быть в DOM, но доступиться ты до него не можешь.
2). Я так понимаю, presense ты определяешь для div, несущего таблицу. При этом совсем не факт, что таблица уже отрисовалась.
3). Исходя из 1 и 2, я бы заменил EC.presence_of_all_element_located(locator) на EC.elementToBeClickable() и локатор бы изменил на td, а не на несущий div.
Ну я с трудом понял логику почему clickable. Для мне это можно применить к кнопке(например) ,но не как ни к ячейке к таблице , а я в локатор передаю именно ячейку таблицы(То есть я жду пока таблица прорисуется). Div я вообще не трогаю.
Я не понимаю почему второй мой вариант кода с текстом нормально проходит.
Чем метод presence_of_element_located хуже)) так скажем, чем text_to_be_present_in_element
Как не странно заработало с element_to_clickable, но логика мне осталась непонятна почему не работает presence_of_element_located…
Потому что clickable = present & visible
Если ячейку таблицы - тогда OK с пунктом 2. Переправь на clickable и должно наступить всеобщее счастье и коммунизЬм
По сути, вариант с текстом - это тот же аналог clickable.
Посмотри здесь: