fix: Status-Text-Suche liest auch das AT-SPI-Text-Interface
Der 'wird ueberprueft'-Text wurde trotz sichtbar auf dem Screenshot nie gefunden - GtkLabel exponiert seinen Text ueblicherweise nicht ueber .name/.description (bleiben oft leer), sondern nur ueber das separate Text-Interface (queryText().getText(0, -1)). _node_text() sammelt jetzt alle drei Quellen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
4bf1992eb9
commit
dfb8c2fc72
@ -117,8 +117,41 @@ VALIDATION_TEXT_MARKERS = (
|
||||
)
|
||||
|
||||
|
||||
def _node_text(node):
|
||||
"""Sammelt allen aus einem Accessible auslesbaren Text: .name,
|
||||
.description UND (falls unterstuetzt) das separate Text-Interface.
|
||||
WICHTIG (real beim Testen entdeckt, 29.08.2026): ein einfaches GtkLabel
|
||||
exponiert seinen sichtbaren Text ueblicherweise NICHT ueber .name/
|
||||
.description (die bleiben dort oft leer) sondern ausschliesslich ueber
|
||||
das AT-SPI-Text-Interface (queryText().getText(0, -1)) - ohne diesen
|
||||
dritten Zugriffsweg fand find_showing_text() den sichtbar angezeigten
|
||||
Status-Text nie, obwohl er laut Screenshot die ganze Zeit auf dem Schirm
|
||||
stand."""
|
||||
parts = []
|
||||
try:
|
||||
if node.name:
|
||||
parts.append(node.name)
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
if node.description:
|
||||
parts.append(node.description)
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
text_iface = node.queryText()
|
||||
content = text_iface.getText(0, -1)
|
||||
if content:
|
||||
parts.append(content)
|
||||
except NotImplementedError:
|
||||
pass
|
||||
except Exception:
|
||||
pass
|
||||
return " ".join(parts).strip().lower()
|
||||
|
||||
|
||||
def find_showing_text(node, needle, depth=0):
|
||||
"""Sucht ein sichtbares Accessible, dessen Name ODER Beschreibung den
|
||||
"""Sucht ein sichtbares Accessible, dessen Text (siehe _node_text()) den
|
||||
Suchtext enthaelt - unabhaengig von seiner Rolle (Label/Expander/...),
|
||||
da Ubiquitys Status-Panel-Text nicht zuverlaessig unter derselben Rolle
|
||||
exponiert sein muss. Bei Unsicherheit ueber den Sichtbarkeitsstatus
|
||||
@ -126,15 +159,7 @@ def find_showing_text(node, needle, depth=0):
|
||||
Klick mitten in die Pruefung setzen)."""
|
||||
if node is None or depth > MAX_DEPTH:
|
||||
return False
|
||||
try:
|
||||
name = (node.name or "").strip().lower()
|
||||
except Exception:
|
||||
name = ""
|
||||
try:
|
||||
desc = (node.description or "").strip().lower()
|
||||
except Exception:
|
||||
desc = ""
|
||||
if needle in name or needle in desc:
|
||||
if needle in _node_text(node):
|
||||
try:
|
||||
state = node.getState()
|
||||
return state.contains(pyatspi.STATE_SHOWING)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user