В общем случае это невозможно, поскольку координаты зависят от того, как именно браузер отображает его.
Но вы можете открыть браузер в python и запустить javascript, который получает координаты и возвращает его в python.Мы будем использовать pywebview в качестве браузера (требуется pip3 install pywebview
).
Откройте окно браузера, используйте JavaScript для проверки HTML-элемента, возвращаемых значений и закройте окно браузера.Обратите внимание, что значения будут зависеть от размера окна.
import webview
from threading import Thread
def thread_fun():
while webview.evaluate_js('document.readyState') != "complete":
# wait for page to load
time.sleep(0.5)
# ask for a bounding rect
bounding_rect = webview.evaluate_js('''
document.querySelector("img.central-featured-logo").getBoundingClientRect()
''');
webview.destroy_window()
print(bounding_rect)
thread = Thread(target=thread_fun)
thread.start()
webview.create_window(title="a title", url="http://wikipedia.org", width=500, height=700)
thread.join()
Результат: {'x': 150, 'y': 176, 'width': 200, 'height': 183, 'top': 176, 'right': 350, 'bottom': 359, 'left': 150}
webview.create_window
должен вызываться в главном потоке, он блокирует его до тех пор, пока окно не будет уничтожено.
Подробнее о пакете веб-просмотра см. https://pywebview.flowrl.com/