Beim Schreiben einer Flutter-Webanwendung versuche ich, ein auf Selen basierendes Web-UI-Test-Framework zu nutzen. Leider kann ich ein HTML-Element, das ein bestimmtes Flatter-Widget darstellt, nicht anhand seiner ID oder seines Namensattributs identifizieren. Der Widget-Schlüssel ist im HTML-Dokument nicht vorhanden.
Ich kann den Text-Widget-Inhalt verwenden, um den Textteil eines Widgets zu finden, und kann das übergeordnete Element finden, das das Widget darstellt, das den Text enthält, aber dies schlägt für Bilder, Leinwand usw. fehl.
Gibt es einen Mechanismus, mit dem ich der HTML-Tag-Suppe eine ID / einen Namen (oder ein anderes Identifikationsmittel) hinzufügen kann?
Gibt es eine Möglichkeit, mithilfe von JavaScript den internen logischen Widget-Baum zu durchlaufen und daraus das darstellende HTML-Element zu schließen (z. B. anhand seiner Position und Größe)?
quelle
Antworten:
Ich denke nicht, dass es der richtige Weg ist, ein Selenium-Testframework für Flutter Web zu verwenden.
Grund dafür ist, dass Sie (als Webentwickler) keine Kontrolle darüber haben, wie das generierte DOM aussieht. Das heißt, Sie können XPath und andere Mittel nicht zum Auswählen von Elementen verwenden.
Ich nehme an, die einzige Möglichkeit zum Testen von Flutter-Apps (einschließlich Flutter Web) ist die Verwendung des Flutter-Treibers: https://api.flutter.dev/flutter/flutter_driver/flutter_driver-library.html
quelle
Sie können Widgets, die auf verschiedenen Geräten gerendert werden, derzeit nicht konsistent Identifikationsinformationen hinzufügen.
Um Ihr Ziel zu erreichen, können Sie jedoch den Flattertreiber verwenden. Das flart_driver Dart-Paket wurde speziell zum Testen der Benutzeroberfläche von Flutter-Apps entwickelt und bietet eine API für die Apps auf realen Geräten, Simulatoren oder Emulatoren. Um mit dem Testen des Flattertreibers zu beginnen, müssen Sie:
Um ein Flutter-Widget zu finden, können Sie SerializableFinder verwenden, z.
Weitere Informationen finden Sie unter:
quelle