Construction d'environnement pour automatiser le test des applications Flutter avec Appium --Qiita Ce sera une continuation de. Je vais en fait écrire le code de test et l'exécuter. Cette fois, j'utiliserai "Python", qui semble relativement facile à préparer, tout en étudiant.
Construction d'environnement pour automatiser le test des applications Flutter avec Appium --Qiita Et la construction de l'environnement d'Appium est terminée
Python devrait être fourni en standard avec Mac, vous n'avez donc pas besoin de l'installer à nouveau. Vous devriez déjà pouvoir utiliser la commande pip, mais si vous ne l'avez pas fait, https://bootstrap.pypa.io/get-pip.py Veuillez télécharger et exécuter la commande suivante à la destination du téléchargement. (Si cela ne fonctionne pas, essayez de l'exécuter avec `` sudo '' devant lui)
python get-pip.py
Exécutez la commande suivante pour installer Appium-Python-Client. (Si cela ne fonctionne pas, essayez de l'exécuter avec `` sudo '' devant lui)
pip install Appium-Python-Client
Nous avons préparé un exemple d'application très simple ci-dessous. (Il s'agit d'une application de comptage qui est écrite par défaut lorsque vous créez un nouveau projet Flutter dans Android Studio)
Démarrez Appium Desktop et allez au point où vous démarrez la session avec "Démarrer la session". (Reportez-vous à Construction de l'environnement pour la procédure)
Lorsque vous démarrez la session, l'écran suivant apparaît. L'écran de l'application s'affiche sur le côté gauche. Si l'affichage ne correspond pas à l'écran de votre appareil, cliquez sur le bouton d'actualisation pour actualiser l'écran. Tout d'abord, cliquez sur le bouton d'enregistrement pour démarrer l'enregistrement.
Ensuite, l'écran changera et le bouton pause s'affichera à la place du bouton d'enregistrement. Pour arrêter l'enregistrement, cliquez sur le bouton pause.
Cliquez ensuite sur le bouton plus de l'écran Appium au lieu du terminal. Les informations sur le bouton plus seront affichées sur le côté droit.
Cliquez sur Appuyer pour voir le code de test en haut. Vous pouvez sélectionner la langue du code de test et sélectionner "Python".
Vous pouvez également sélectionner JS (wd), JS (Webdriver.io), Ruby, Java et Robot Framework.
Cela vous permet d'enregistrer le code de test lorsque vous appuyez sur le bouton. Le code de test enregistré est le suivant.
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()
Ensuite, je voudrais tester que le texte étiqueté «1» est correctement étiqueté comme «1». Vous pouvez obtenir l'élément à partir du "Sélecteur" de "Elément sélectionné" en cliquant sur l'élément.
Mais je ne savais pas comment l'enregistrer dans Appium Desktop.
Appium-Python-Client · PyPI Selon le site, vous pouvez utiliser la fonction get_attribute pour obtenir la valeur définie dans le texte.
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)
Le code de test est décrit comme suit.
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)
Le simple fait de l'enregistrer n'est pas encore prêt pour l'exécution, alors jetez-y les bases. Le code complet est ci-dessous.
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)
# -----Collez le code enregistré dans Appium Desktop à partir d'ici
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)
# -----Collez le code enregistré dans Appium Desktop jusqu'à présent
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(FlutterAppTests)
unittest.TextTestRunner(verbosity=2).run(suite)
Ici, je vais l'expliquer brièvement. Tout d'abord, dans la fonction de configuration, décrivez les informations sur l'appareil et l'APK. C'est OK si vous entrez les mêmes informations que "Capacités souhaitées" d'Appium Desktop.
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'))
Ensuite, dans la fonction test_single_player_mode, collez le code de test que vous venez d'enregistrer dans Appium Desktop. Bien sûr, vous pouvez l'implémenter vous-même. Voici le code de test réel.
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)
Enfin, utilisez la fonction tearDown pour terminer le pilote.
self.driver.quit()
Exécutez le code de test avec la commande.
python flutter_app_for_appium_test.py
Vous devriez voir quelque chose comme ceci: L'application doit également démarrer du côté du terminal et le bouton doit être enfoncé pour compter.
test_single_player_mode (__main__.FlutterAppTests)
Test the Flutter app launches correctly ... ok
----------------------------------------------------------------------
Ran 1 test in 25.573s
OK
Recommended Posts