Save screenshots when using click-element

This commit is contained in:
Florian Bruhin 2023-11-21 16:26:29 +01:00
parent 14c00fcdf0
commit 9e148db5a6
1 changed files with 22 additions and 2 deletions

View File

@ -4,12 +4,15 @@
"""Generic web element related code."""
import os
import functools
import datetime
from typing import Iterator, Optional, Set, TYPE_CHECKING, Union, Dict
import collections.abc
from qutebrowser.qt import machinery
from qutebrowser.qt.core import QUrl, Qt, QEvent, QTimer, QRect, QPointF
from qutebrowser.qt.gui import QMouseEvent
from qutebrowser.qt.core import QUrl, Qt, QEvent, QTimer, QRect, QPointF, QPoint, QSize
from qutebrowser.qt.gui import QMouseEvent, QPainter
from qutebrowser.config import config
from qutebrowser.keyinput import modeman
@ -355,10 +358,27 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a
QMouseEvent(QEvent.Type.MouseButtonRelease, pos, button, Qt.MouseButton.NoButton, modifiers),
]
pixmap = self._tab.private_api.event_target().grab()
assert not pixmap.isNull()
painter = QPainter()
assert painter.begin(pixmap)
painter.setPen(Qt.GlobalColor.red)
painter.drawLine(pos - QPointF(10, 0), pos + QPointF(10, 0))
painter.drawLine(pos - QPointF(0, 10), pos + QPointF(0, 10))
assert painter.end()
for evt in events:
self._tab.send_event(evt)
QTimer.singleShot(0, self._move_text_cursor)
QTimer.singleShot(0, functools.partial(self._save_pixmap, pixmap))
def _save_pixmap(self, pixmap):
test = os.environ.get("PYTEST_CURRENT_TEST", "unknown").replace("/", "_")
ts = datetime.datetime.now().isoformat()
filename = f"/tmp/qb-{test}-{ts}.png"
log.misc.debug(filename)
assert pixmap.save(filename)
def _click_editable(self, click_target: usertypes.ClickTarget) -> None:
"""Fake a click on an editable input field."""