Python Selenium Ajax jquery: Как узнать, когда jquery (начальная загрузка) обновит страницу, чтобы я мог сделать снимок экрана

#python #jquery #selenium #bootstrap-4

Вопрос:

Я пытаюсь сделать снимок экрана после завершения загрузки страницы и выполнения всего jquery. Страница загружается в IE, Edge и FireFox, но все три браузера иногда немного замедляют работу jquery, и я получаю наглядное изображение работы jquery.

 start_time = time.perf_counter()

ClickActionElement = Utility_Element_Verify.ID_Element(self,
            ElementID = ElementID,
            ElementDescription = ElementDescription)

webdriver.ActionChains(self.driver).move_to_element(ClickActionElement).perform()
webdriver.ActionChains(self.driver).move_to_element(ClickActionElement).click(ClickActionElement).perform()
WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.ID , WaitElementID)))

end_time = time.perf_counter()
time_elapsed = (end_time - start_time)
self.TestEventLog  = "<br />LoadTime: Admin page and the Specific Ajax was completed before: "   str(time_elapsed)   " seconds"
 

Что мне сделать, чтобы убедиться, что jquery все сделано здесь, прежде чем я сделаю снимок экрана?

 Utility_Capture_Screen.CaptureScreen(self)  # sometimes it's to fast
 

Изображение сохраняется, но иногда jquery не завершен. Как я могу определить, что jquery выполнен?

Ответ №1:

Проверьте, завершен ли jQuery, используя jQuery.active статус. Внутри вашего WebDriverWait использования lambda для проверки статуса jQuery.

 wait = WebDriverWait(driver, 10)
wait.until(lambda d: d.execute_script('return jQuery.active == 0'))