Подскажите пожалуйста.Можно ли каким либо образом узнать завершилось ли выполнение всех скриптов на странице.?? Получить как то от браузера или еще как то.???
Проблема в том, что в тесте я нажимаю кнопку и выполняется #javascript . С сервера получаю информацию.Она запихивается в таблицу.
Есть метод в котором использую find_elements_by_tag_name (ищу там всякие th tr td в таблице).Метод отрабатывает быстрее чем данные попадут в дом.Аналогию метода find_elements_by_tag_name в классе ExpectedCondition не нашел.
Метод примерно следующий:
def get_all_rows_in_table(self, locator):
try:
element = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located(locator)
)
rows = element.find_elements_by_tag_name("tr")
return rows
except TimeoutException:
print u"Таблица не найдена"
def get_cells_text_on_table(self, row):
list_of_text = []
list_of_elements = row.find_elements_by_tag_name("td")
if list_of_elements == []:
list_of_elements = row.find_elements_by_tag_name("th")
for cell in list_of_elements:
if not ("ng-hide" in cell.get_attribute('class')):
list_of_text.append(cell.text)
return list_of_text
Когда я вызываю get_cells_text_on_table с параметром rows[1] в таблице еще нету строки с данным текстом. Я получаю, что то вида IndexOutOfRange или что искомый элмент не в доме
Ставить time.sleep(1) не хочется.
Вот и появилась идея ждать пока завершатся скрипты и тогда уже проверять, что отображается на странице.
Можно ли это сделать без всяких Protraktor-ов))) Потому, что я еще в Python новечек можно сказать,а еще и javascript пока времени нет(((
Ну я бы подождал пока загрузятся все нужные элементы на странице. Для того чтобы дождаться - нужно чётко знать какое количество их должно быть. И только после загрузки всех элемнетов проверить на нужное условие
Извини, но не могу сказать как в python
Пока писал на чистом java селениуме, писал while(elements.size() < 58){
sleep(200);
}
Потом уже использовал waitUntil() длинный
Не зло, если тебе надо по простому решить проблему не городя логики. И плюс если у тебя хорошо устроена инкапсуляция потоков тестов.
У тебя тесты мног опоточно бегают?
Нет… Все пока запускается в консоле или из среды.Никаких потоков нету.Есть всякие PageObject + Allure + Pytest+Jenkins. В общем вопрос остается открытым
Эти все варианты я читал мне они чем то не понравилось…
Хочется именно завершения Javascript
В JQuery есть (я находил на форуме), какая-то переменная, которая отвечает за количество завершенных скриптов. У меня Angular ,как я понимаю там такого нет…
В общем буду искать