La dernière fois, j'ai écrit dans "Automatisation des tests d'applications pour smartphone avec Appium-Overview" qu'Appium peut automatiser les tests d'applications pour smartphone.
Cette fois, je voudrais écrire sur la façon de créer un code de test pour les applications pour smartphone à l'aide d'Appium et de Python.
(Supplément) Pour le moment (20 juillet 2013), nous ciblons uniquement les applications iOS. Les applications Android seront décrites plus tard.
L'environnement utilisé cette fois est le suivant.
Logiciel | version |
---|---|
OS | MacOS X version 10.8.4 |
Python | 2.7.4 |
pip | 1.2.1 |
XCode | 4.5.3 |
Pour plus d'informations sur l'installation d'Appium, consultez l'article précédent: "Automatisation des tests d'applications pour smartphone avec Appium-Overview".
Tout d'abord, vérifions l'opération à l'aide de l'exemple de code. Les opérations à partir d'ici sont effectuées sur le terminal.
Obtenez la source Appium complète sur GitHub.
git clone https://github.com/appium/appium.git
Une fois que vous avez la source Appium complète, accédez au dossier TestApp.
cd appium/sample-code/apps/TestApp/
Créez votre application iOS à l'aide de la commande xcodebuild. Le SDK iOS utilisé pour la construction doit être iPhone Simulator.
xcodebuild -sdk iphonesimulator
Accédez au dossier qui contient l'exemple de code Python.
cd ../../examples/python/
Avant d'exécuter l'exemple de code, assurez-vous que vous disposez du module sélénium Python. Sinon, utilisez pip pour installer le module sélénium.
#Vérifiez si le module sélénium Python est inclus
pip freeze
#Si le module sélénium n'est pas inclus, exécutez la commande suivante
sudo pip install selenium
Maintenant que nous sommes prêts, exécutons l'exemple de code.
appium &
python simple.py
J'ai beaucoup cherché, mais je n'ai pas trouvé de tutoriel sur la façon d'écrire du code de test en Python, alors j'aimerais résumer comment écrire du code de test basé sur l'exemple de code. → Si vous trouvez quelque chose comme un tutoriel, réécrivez le contenu de cet article.
L'emplacement de stockage de l'exemple de code est "appium / sample-code / examples / python /".
Si vous lisez l'exemple de code, vous pouvez voir que l'application iOS s'exécute via l'API WebDriver du module selenuim.
import unittest
class AppiumSampleTest(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def setUp(self):
#Obtenez le chemin où se trouve l'application iOS
# (Importez le module os)
app = '(Le chemin où se trouve l'application iOS)'
#Faire reconnaître les applications iOS par Appium à l'aide du Webdriver de Selenium
# (Importez le webdriver depuis le module sélénium)
# command_La partie domaine et la partie port spécifiées par l'exécuteur sont
#Cela dépend de l'environnement que vous utilisez
self.driver = webdriver.Remote(
command_executor = 'http://127.0.0.1:4723/wd/hub',
desired_capabilities = {
'browserName' : 'iOS',
'platform' : 'Mac',
'version' : '6.0', #version iOS
'app' : app #Le chemin où se trouve l'application iOS à exécuter
})
def tearDown(self):
self.driver.quit()
def test_ui_operation(self):
# 1.Fonctionnement du curseur
# 1-1.Obtenez le curseur
sliders = self.driver.find_elements_by_tag_name('slider')
# 1-2.Évaluer la valeur initiale du curseur
self.assertEqual(sliders[0].get_attribute('value'), '50%')
# 1-3.Obtenez des événements tactiles
drag = webdriver.common.touch_actions.TouchActions(self.driver)
# 1-4.Réglez le curseur-50%À
drag.flick_element(sliders[0], -0.5, 0, 0)
# 1-5.Déplacez le curseur
drag.perform()
# 1-6.La valeur de réglage du curseur est 0%Évaluer cela
self.assertEqual(sliders[0].get_attribute('value'), '0%')
# 2.Manipulation des champs de texte
# 2-1.Obtenez un champ de texte
textFields = self.driver.find_elements_by_tag_name('textField')
# 2-2.Entrez 1 dans le premier champ de texte
textFields[0].send_keys(1)
# 2-3.Entrez 2 dans le deuxième champ de texte
textFields[1].send_keys(2)
# 2-4.Évaluez que la somme des valeurs dans les premier et deuxième champs de texte est de 3.
self.assertEqual(int(textFields[0].get_attribute('value'))
+ int(textFields[1].get_attribute('value')), 3)
# 3.Fonctionnement des boutons
# 3-1.Obtenez le bouton
buttons = self.driver.find_elements_by_tag_name('button')
# 3-2.Cliquez sur le bouton
buttons[0].click()
# 4.Manipulation d'étiquettes
# 4-1.Obtenez l'étiquette
texts = self.driver.find_elements_by_tag_name('staticText')
# 4-2.Évaluer que le contenu de l'étiquette est 3
self.assertEqual(int(texts[0].get_attribute('value')), 3)
Pour résumer la gestion des parties d'écran des applications iOS dans le module sélénium
Pièces d'écran | Méthode d'acquisition |
---|---|
UITextField | self.driver.find_elements_by_tag_name('textField') |
UIButton | self.driver.find_elements_by_tag_name('button') |
UILabel | self.driver.find_elements_by_tag_name('staticText') |
UISlider | self.driver.find_elements_by_tag_name('slider') |
Pièces d'écran | Détails de l'opération | Mode opératoire |
---|---|---|
UITextField | Entrez une valeur | send_Utilisez la méthode des clés |
UITextField | Obtenez la valeur | get_Utilisez la méthode des attributs |
UIButton | Cliquez sur le bouton | Utilisez la méthode du clic |
UILabel | Obtenez le contenu d'affichage de l'étiquette | Se référer à la propriété text |
UISlider | Changer la valeur de réglage | Effleurer Actions tactiles_Définissez la valeur avec la méthode d'élément. Après le réglage, déplacez le curseur avec la méthode perform de TouchActions. |
Ce sera.
(Supplément) Le tableau ci-dessus sera mis à jour de temps à autre.
L'image globale du code source est la suivante.
# coding: utf-8
import unittest
import os
from selenium import webdriver
class AppiumSampleTest(unittest.TestCase):
def setUp(self):
#Obtenez le chemin où se trouve l'application iOS
app = os.path.join('/tmp/appium',
'sample-code/apps/TestApp/build/Release-iphonesimulator',
'TestApp.app')
app = os.path.abspath(app)
#Faire reconnaître les applications iOS par Appium à l'aide du Webdriver de Selenium
# command_La partie domaine et la partie port spécifiées par l'exécuteur sont
#Cela dépend de l'environnement que vous utilisez
self.driver = webdriver.Remote(
command_executor='http://localhost:4723/wd/hub',
desired_capabilities={
'browserName': 'iOS',
'platform': 'Mac',
'version': '6.0',
'app': app
})
def test_ui_operation(self):
#Fonctionnement du curseur
sliders = self.driver.find_elements_by_tag_name('slider')
self.assertEqual(sliders[0].get_attribute('value'), '50%')
drag = webdriver.common.touch_actions.TouchActions(self.driver)
drag.flick_element(sliders[0], -0.5, 0, 0)
drag.perform()
self.assertEqual(sliders[0].get_attribute('value'), '0%')
#Manipulation des champs de texte
textFields = self.driver.find_elements_by_tag_name('textField')
textFields[0].send_keys(1)
textFields[1].send_keys(2)
self.assertEqual(int(textFields[0].get_attribute('value'))
+ int(textFields[1].get_attribute('value')), 3)
#Fonctionnement des boutons
buttons = self.driver.find_elements_by_tag_name('button')
buttons[0].click()
#Manipulation d'étiquettes
texts = self.driver.find_elements_by_tag_name('staticText')
self.assertEqual(int(texts[0].get_attribute('value')), 3)
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()
Recommended Posts