Получение координат элемента DOM без отображения представления в pyqt5

DSKim спросил: 14 ноября 2017 в 06:06 в: python

Я пытаюсь получить координаты ограничительной рамки для всех элементов DOM. В настоящее время я использую pyqt5 и могу сделать это успешно со следующими кодами:

class Browser(QWebEngineView):
    def __init__(self):
        super(Browser, self).__init__()
        self.loadFinished.connect(self._load_finished)    def _result(self, x):
        for tagname, top, right, bottom, left in x:
            print "%8s %3d %3d %3d %3d"%(tagname, top, right, bottom, left)    def _load_finished(self):
        js_script = """
                function get_coordinates() {
                    var res = [];
                    var all = document.getElementsByTagName("*");
                    for (var i=0, max=all.length; i < max; i++) {
                        var rect = all[i].getBoundingClientRect()
                        res.push([all[i].tagName, rect.top, rect.right, rect.bottom, rect.left]);
                    }
                    return res;            
                }
                get_coordinates();
                """
        self.page().runJavaScript(js_script, self._result)app = QApplication(sys.argv)
br = Browser()
url = QUrl(url_address)
br.load(url)
br.show()
app.exec_()

Одним из недостатков этого кода является то, что он открывает браузер для отображения веб-страницы (из-за br.show ()), и мне интересно, есть ли способ предотвратить это. Я просто прокомментировал br.show () и запустил коды. Но результаты координат для некоторых элементов DOM отличаются от исходных.

спасибо,

0 ответов