Как в QWebEngineView выяснить что видно пользователю?

У меня есть объект QWebEngineView с именем webview. Я загружаю в него html файл и далее я пытаюсь понять какая часть страницы находится в видимом пространстве, то есть видна пользователю. Понятно что само окно webview небольшое, скажем, 800 на 600, а страница очень длинная. Мне надо узнать, какая именно часть страницы прямо сейчас видна пользователю, если он листает её туда-сюда. Я хочу получить информацию например такую: вот сейчас в видимом для пользователя пространстве окна webview у нас есть такие-то тэги, такой-то текст. Или даже прямо кусок HTML который сейчас находится именно в границах окна и предположительно виден пользователю, я его уже потом разберу конструктором, но мне нужно понимать, что вот эта часть сейчас в окне, а не где-то там за окном и до неё пользователь долистает только через десять экранов. Никаких автоматических способов для этого я не нашел. Причем я бы хотел обойтись вообще без JS и использовать только Python. Но даже если использовать JS, например такой, это не работает - он просто больше не видит элементов по координатам центра webview если прокрутить данные хотя бы на один экран вперед. Видит только сразу после загрузки на первом экране и всё.

def on_scroll_changed(self):
        scroll_pos = self.webview.page().scrollPosition()
        
        view_size = self.webview.size()

        # Рассчитываем координаты центра видимой области
        center_x = view_size.width() // 2
        center_y = scroll_pos.y() + view_size.height() // 2
        
        js_code = f"""
            var element = document.elementFromPoint({center_x}, {center_y});
            
            if (element) {{
                var elementData = {{
                    tagName: element.tagName,
                    text: element.innerText,
                    id: element.id,
                    dataNumber: element.getAttribute("data-number") 
                }};
                elementData;
        """

Ответы (0 шт):