2017-08-22 6 views
0

Ich bin vergleichsweise neu bei Squish und ich teste unsere GUI, die mit Qt5.9 erstellt wurde.Squish - Alle Objekte in allen Menüs einer QT-basierten GUI basierend auf ihrem Typ und ihrer Eigenschaft anzeigend

Momentan möchte ich die Größe aller Schriftarten in unserer Anwendung mit einem festen Wert (Größe 12) überprüfen.

Ich habe die Testdatei aufgezeichnet und versucht, über das Menü zu jeder Seite zu gehen und die Objekte auszuwählen, die mit "type: QLabel" und "property: pointSize" übereinstimmen. Aber es ist ein sehr langsamer Prozess und ich muss auf jeder Seite 200 Objekte auswählen. Ich habe 3 Seiten durch das Menü gegangen und mein Code ist bereits 500+ Zeilen. Hier ist ein Teil des Codes:

def main(): 
startApplication("ke3600") 
test.compare(waitForObjectExists(":_QLabel").font.bold, False) 
test.compare(waitForObjectExists(":_QLabel").font.pointSize, 12) 
test.compare(waitForObjectExists(":_MainWindow").font.bold, False) 
test.compare(waitForObjectExists(":_MainWindow").font.pointSize, 12) 
test.compare(waitForObjectExists(":Widget_QWidget").font.bold, False) 
test.compare(waitForObjectExists(":Widget_QWidget").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_voltage_LineVoltageWidget").font.bold, False) 
test.compare(waitForObjectExists(":m_voltage_LineVoltageWidget").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_dslSyncTime_QLabel").font.bold, False) 
test.compare(waitForObjectExists(":m_dslSyncTime_QLabel").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_clock_QLabel").font.bold, False) 
test.compare(waitForObjectExists(":m_clock_QLabel").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_stackedWidget_QStackedWidget").font.bold, False) 
test.compare(waitForObjectExists(":m_stackedWidget_QStackedWidget").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_stackedWidget.flashPage_QWidget").font.bold, False) 
test.compare(waitForObjectExists(":m_stackedWidget.flashPage_QWidget").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_stackedWidget.moduleframe_QFrame").font.bold, False) 
test.compare(waitForObjectExists(":m_stackedWidget.moduleframe_QFrame").font.pointSize, 12) 
test.compare(waitForObjectExists(":moduleframe.label_QLabel").font.bold, False) 
test.compare(waitForObjectExists(":moduleframe.label_QLabel").font.pointSize, 16) 
test.compare(waitForObjectExists(":moduleframe.moduleLabel_QLabel").font.bold, False) 
test.compare(waitForObjectExists(":moduleframe.moduleLabel_QLabel").font.pointSize, 16) 
test.compare(waitForObjectExists(":moduleframe.passLabel_QLabel").font.bold, False) 
test.compare(waitForObjectExists(":moduleframe.passLabel_QLabel").font.pointSize, 16) 
test.compare(waitForObjectExists(":m_stackedWidget.errorLabel_QLabel").font.bold, False) 
test.compare(waitForObjectExists(":m_stackedWidget.errorLabel_QLabel").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_stackedWidget.flashProgressBar_QProgressBar").font.bold, False) 
test.compare(waitForObjectExists(":m_stackedWidget.flashProgressBar_QProgressBar").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_stackedWidget.applPage_QWidget").font.bold, False) 
test.compare(waitForObjectExists(":m_stackedWidget.applPage_QWidget").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_stackedWidget.menuPage_QWidget").font.bold, False) 
test.compare(waitForObjectExists(":m_stackedWidget.menuPage_QWidget").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_stackedWidget.m_menuName_QLabel").font.bold, True) 
test.compare(waitForObjectExists(":m_stackedWidget.m_menuName_QLabel").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_stackedWidget.subTitle_QLabel").font.bold, False) 
test.compare(waitForObjectExists(":m_stackedWidget.subTitle_QLabel").font.pointSize, 12) 
test.compare(waitForObjectExists(":m_stackedWidget.listView_MenuView").font.bold, False) 
test.compare(waitForObjectExists(":m_stackedWidget.listView_MenuView").font.pointSize, 12) 
test.compare(waitForObjectExists(":listView.qt_scrollarea_hcontainer_QWidget").font.bold, False) 
test.compare(waitForObjectExists(":listView.qt_scrollarea_hcontainer_QWidget").font.pointSize, 12) 
test.compare(waitForObjectExists(":listView_QScrollBar").font.bold, False) 
test.compare(waitForObjectExists(":listView_QScrollBar").font.italic, False) 
test.compare(waitForObjectExists(":listView.qt_scrollarea_vcontainer_QWidget").font.bold, False) 
test.compare(waitForObjectExists(":listView.qt_scrollarea_vcontainer_QWidget").font.pointSize, 12) 
test.compare(waitForObjectExists(":listView_QScrollBar_2").font.bold, False) 
test.compare(waitForObjectExists(":listView_QScrollBar_2").font.pointSize, 12) 
test.compare(waitForObjectExists(":listView.Broadband_QModelIndex").font.bold, False) 
test.compare(waitForObjectExists(":listView.Broadband_QModelIndex").font.pointSize, 12) 
test.compare(waitForObjectExists(":listView.Copper Test_QModelIndex").font.bold, False) 
test.compare(waitForObjectExists(":listView.Copper Test_QModelIndex").font.pointSize, 12) 
test.compare(waitForObjectExists(":listView.Analysis_QModelIndex").font.bold, False) 
test.compare(waitForObjectExists(":listView.Analysis_QModelIndex").font.pointSize, 12) 
test.compare(waitForObjectExists(":listView.Setup_QModelIndex").font.bold, False) 
test.compare(waitForObjectExists(":listView.Setup_QModelIndex").font.pointSize, 12) 
test.compare(waitForObjectExists(":listView.Address Book_QModelIndex").font.bold, False) 
test.compare(waitForObjectExists(":listView.Address Book_QModelIndex").font.pointSize, 12) 
test.compare(waitForObjectExists(":Battery_Battery").font.bold, False) 
test.compare(waitForObjectExists(":Battery_Battery").font.pointSize, 12) 

Dieser Prozess funktioniert, aber meine letzte Code wird mehr als 20k Linien und wird mich ewig dauern, wenn ich durch alle Seiten aus meinem Menü gehen und wählen Sie alle Objekte, die in fällt meine erforderliche Kategorie.

Update:

Ok, so kann mir nur durch ihren „Typen“ für ein Objekt suchen, und ich kann ihre Schriftgröße mit einem Standardwert mit dem folgenden Code vergleichen:

o = findObject("{name~='' type='QLabel'}") 
test.compare(str(o.font.pointSize), "12") 

Nun ist meine Frage,

Wie überprüfe ich alle Seiten aller Menüs der Anwendung, ohne auf jede einzelne Seite gehen und diesen Code manuell ausführen? Etwas wie Baumdurchquerung? Zum Beispiel wird dies automatisch zu jedem Baum des Menüs gehen und nach dem Objekt suchen und wenn es dort ist, wird es die Schriftgröße vergleichen?

Antwort

0

Nach dem Lesen des "User Guide" konnte ich eine Lösung für dieses Problem finden. Wenn jemand noch interessiert:

def main(): 
    startApplication("ke3600") 


    objects = find_all_objects("{type='QLabel'}") 

    # Iterate over all the found objects: 
    for obj in objects: 
     test.log(str(obj.font.pointSize)) 
     test.log(str(obj.objectName)) 
     pass 

def find_all_objects(obj_real_name): 
    if "occurrence=" in obj_real_name: 
     test.warning("Real name must not contain the occurrence property on the actual object (but it is okay for containers): %s" % obj_real_name) 

    objects = [] 
    try: 
     one_object = findObject(obj_real_name) 
     objects.append(one_object) 

     # Occurrence of second instance for Java, MFC, UIA: 
     occurrence = 1 

     # Occurrence of second instance for Qt, Web: 
     if hasattr(one_object, "metaObject") or hasattr(one_object, "nextSibling"): 
      occurrence = 2 

     while True: 
      backup = testSettings.objectNotFoundDebugging 
      testSettings.objectNotFoundDebugging = False 
      try: 
       obj_real_name_n = "{occurrence='%s' %s}" % (occurrence, obj_real_name[1:-1]) 
       one_object = findObject(obj_real_name_n) 
       objects.append(one_object) 
       occurrence += 1 
      finally: 
       testSettings.objectNotFoundDebugging = backup 
    except LookupError: 
     # No more occurrences found 
     pass 
    return objects 

Dieser Code sieht für alle Objekte vom Typ = ‚QLabel‘ und deren Schriftgröße und Objektnamen drucken.

Verwandte Themen