Umgebungskonstruktion, die das Testen von Flutter-Apps mit Appium - Qiita automatisiert Es wird eine Fortsetzung von sein. Ich werde den Testcode tatsächlich schreiben und ausführen. Dieses Mal werde ich "Python" verwenden, das relativ einfach vorzubereiten zu sein scheint, während ich gleichzeitig lerne.
Umgebungskonstruktion, die das Testen von Flutter-Apps mit Appium - Qiita automatisiert Und der Umweltbau von Appium ist abgeschlossen
Python sollte standardmäßig mit dem Mac geliefert werden, sodass Sie es nicht erneut installieren müssen. Sie sollten den Befehl pip bereits verwenden können, aber wenn Sie dies nicht getan haben, https://bootstrap.pypa.io/get-pip.py Bitte laden Sie den folgenden Befehl am Download-Ziel herunter und führen Sie ihn aus. (Wenn das nicht funktioniert, versuchen Sie es mit `` `sudo``` davor auszuführen)
python get-pip.py
Führen Sie den folgenden Befehl aus, um Appium-Python-Client zu installieren. (Wenn das nicht funktioniert, versuchen Sie es mit `` `sudo``` davor auszuführen)
pip install Appium-Python-Client
Wir haben unten eine sehr einfache Beispiel-App vorbereitet. (Dies ist eine Count-up-App, die standardmäßig geschrieben wird, wenn Sie ein neues Flutter-Projekt in Android Studio erstellen.)
Starten Sie Appium Desktop und gehen Sie zu dem Punkt, an dem Sie die Sitzung mit "Sitzung starten" starten. (Informationen zum Verfahren finden Sie unter Umgebungskonstruktion.)
Wenn Sie die Sitzung starten, wird der folgende Bildschirm angezeigt. Der App-Bildschirm wird auf der linken Seite angezeigt. Wenn die Anzeige nicht mit dem Bildschirm Ihres Geräts übereinstimmt, klicken Sie auf die Schaltfläche Aktualisieren, um den Bildschirm zu aktualisieren. Klicken Sie zunächst auf die Schaltfläche Aufnahme, um die Aufnahme zu starten.
Dann wechselt der Bildschirm und die Pause-Taste wird anstelle der Aufnahmetaste angezeigt. Klicken Sie auf die Schaltfläche Pause, um die Aufnahme zu beenden.
Klicken Sie dann im Appium-Bildschirm anstelle des Terminals auf die Plus-Schaltfläche. Informationen zur Plus-Schaltfläche werden auf der rechten Seite angezeigt.
Klicken Sie auf Tippen, um den Testcode oben anzuzeigen. Sie können die Sprache des Testcodes auswählen und "Python" auswählen.
Sie können auch JS (wd), JS (Webdriver.io), Ruby, Java und Robot Framework auswählen.
Auf diese Weise können Sie den Testcode aufzeichnen, wenn Sie die Taste drücken. Der aufgezeichnete Testcode lautet wie folgt.
el1 = self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.View/android.view.View/android.view.View/android.view.View/android.widget.Button")
el1.click()
Als nächstes möchte ich testen, ob der Text mit der Bezeichnung "1" ordnungsgemäß als "1" gekennzeichnet ist. Sie können das Element aus "Selector" von "Selected Element" abrufen, indem Sie auf das Element klicken.
Aber ich wusste nicht, wie ich es in Appium Desktop aufnehmen sollte.
Appium-Python-Client · PyPI Je nach Site können Sie die Funktion get_attribute verwenden, um den im Text festgelegten Wert abzurufen.
el = driver.find_element_by_class_name('android.widget.EditText')
driver.set_value(el, 'Testing')
text = el.get_attribute('text')
assertEqual('Testing', text)
el.set_value('More testing')
text = el.get_attribute('text')
assertEqual('More testing', text)
Der Testcode wird wie folgt beschrieben.
el2 = self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.View/android.view.View/android.view.View/android.view.View/android.view.View[3]")
text = el2.get_attribute('text')
self.assertEqual('1', text)
Nur die Aufnahme ist noch nicht zur Ausführung bereit, also legen Sie den Grundstein dafür. Der vollständige Code ist unten.
flutter_app_for_appium_test.py
import os
import unittest
from appium import webdriver
from time import sleep
class FlutterAppTests(unittest.TestCase):
"Class to run tests against the Chess Free app"
def setUp(self):
"Setup for the test"
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '988a97354e4e4c5054'
desired_caps['app'] = os.path.abspath(os.path.join(os.path.dirname(__file__), '/Users/Hitoshi/AndroidStudioProjects/flutter_app_for_appium/build/app/outputs/apk/release/app-release.apk'))
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def tearDown(self):
"Tear down the test"
self.driver.quit()
def test_single_player_mode(self):
"Test the Flutter app launches correctly"
sleep(1)
# -----Fügen Sie von hier aus den in Appium Desktop aufgezeichneten Code ein
el1 = self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.View/android.view.View/android.view.View/android.view.View/android.widget.Button")
el1.click()
el2 = self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.View/android.view.View/android.view.View/android.view.View/android.view.View[3]")
text = el2.get_attribute('text')
self.assertEqual('1', text)
# -----Fügen Sie den bisher in Appium Desktop aufgezeichneten Code ein
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(FlutterAppTests)
unittest.TextTestRunner(verbosity=2).run(suite)
Hier werde ich es kurz erklären. Beschreiben Sie zunächst in der Funktion setUp die Geräte- und APK-Informationen. Es ist in Ordnung, wenn Sie dieselben Informationen wie "Gewünschte Funktionen" von Appium Desktop eingeben.
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '988a97354e4e4c5054'
desired_caps['app'] = os.path.abspath(os.path.join(os.path.dirname(__file__), '/Users/Hitoshi/AndroidStudioProjects/flutter_app_for_appium/build/app/outputs/apk/release/app-release.apk'))
Fügen Sie als Nächstes in der Funktion test_single_player_mode den Testcode ein, den Sie gerade in Appium Desktop aufgezeichnet haben. Natürlich können Sie es selbst implementieren. Hier ist der eigentliche Testcode.
el1 = self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.View/android.view.View/android.view.View/android.view.View/android.widget.Button")
el1.click()
el2 = self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.View/android.view.View/android.view.View/android.view.View/android.view.View[3]")
text = el2.get_attribute('text')
self.assertEqual('1', text)
Verwenden Sie abschließend die TearDown-Funktion, um den Treiber zu beenden.
self.driver.quit()
Führen Sie den Testcode mit dem Befehl aus.
python flutter_app_for_appium_test.py
Sie sollten so etwas sehen: Die App sollte auch auf der Terminalseite starten und die Taste sollte gedrückt werden, um hochzuzählen.
test_single_player_mode (__main__.FlutterAppTests)
Test the Flutter app launches correctly ... ok
----------------------------------------------------------------------
Ran 1 test in 25.573s
OK
Recommended Posts