当前位置:网站首页>Mise en place d'un cadre d'essai d'automatisation de l'interface utilisateur - - rédaction d'une application d'automatisation
Mise en place d'un cadre d'essai d'automatisation de l'interface utilisateur - - rédaction d'une application d'automatisation
2022-06-28 04:33:00 【Test Ii) noir】
Voyons d'abord les effets
Voyage d'essai,
test_home_android_textExécution du cas d'utilisation
Numéro de la vidéo
Préface
APPEssais automatisés etWebLa différence entre les tests automatisés est que leur environnement est plus complexe à construire,Mais après la construction de l'environnement,Les étapes de fonctionnement spécifiques sont similaires.Ce sont tous des éléments de localisation+Éléments opérationnels
Il y avait un article précédent qui utilisaitWEditorDéveloppementAPPLes scripts de test automatisés peuvent être utilisés pourAPPOutils de positionnement automatisés
Voici un autre outil plus puissant「Sonic」
ConstructionSonic
Comme il n'y a pas beaucoup d'appareils à connecter,Cette fois「Construction rapide」
Télécharger ledocker-compose.ymlDocumentation
Les autorités ont adopté desmysqlBase de données,Mais c'est plus compliqué,Alors, changez tout de suite
Ajouter
db:
image: mysql
command: --character-set-server=utf8 --collation-server=utf8_general_ci
volumes:
- mysql_db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: Sonic!@#123
MYSQL_DATABASE: sonic
MYSQL_ROOT_HOST: '%'
ports:
- "3307:3306"
networks:
- sonic-network
De mon côté de l'ordinateur central ipPour172.28.253.211, Changez - le en votre propre IPC'est bon
version: '3'
services:
db:
image: mysql
command: --character-set-server=utf8 --collation-server=utf8_general_ci
volumes:
- mysql_db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: Sonic!@#123
MYSQL_DATABASE: sonic
MYSQL_ROOT_HOST: '%'
ports:
- "3307:3306"
networks:
- sonic-network
sonic-server-simple:
image: "sonicorg/sonic-server-simple:v1.3.1-beta"
depends_on:
- db
environment:
#Ce qui suit:MySqlConfiguration,localhost S'il vous plaît remplacer par vous - même MySqlServicesipv4Adresse
- MYSQL_HOST=172.28.253.211
- MYSQL_PORT=3307
- MYSQL_DATABASE=sonic
- MYSQL_USERNAME=root
- MYSQL_PASSWORD=Sonic!@#123
# Si vous déployez sur le serveur ,localhostAu lieu de serveurip,portModifier comme suit:sonic-server-simpleExpositionport(Généralement inchangé)
- SONIC_API_HOST=172.28.253.211
- SONIC_API_PORT=8094
- SONIC_NETTY_PORT=8095
#tokenCryptékeyValeur
- SECRET_KEY=sonic
#AuthentificationtokenJours effectifs
- EXPIRE_DAY=14
# Adresse d'accès à la page d'accueil ,Ne pas remplir l'avis tacitehttp://localhost:3000
- CLIENT_HOST=http://172.28.253.211:3000
#Jours de conservation des documents( Se réfère à la documentation générée par le processus d'essai ,Y compris les photos、 Vidéo, etc )
- FILE_KEEP_DAY=60
# Nombre de jours pendant lesquels les résultats des tests sont conservés
- RESULT_KEEP_DAY=60
#Tout ce qui suit estCronExpression
# Nettoyage des fichiers tâches programmées
- FILE_CRON=0 0 12 * * ?
# Nettoyage des résultats des tests tâches programmées
- RESULT_CRON=0 0 12 * * ?
# Envoyer une tâche quotidienne programmée
- DAY_CRON=0 0 10 * * ?
# Envoyer des tâches hebdomadaires programmées
- WEEK_CRON=0 0 10 ? * Mon
networks:
- sonic-network
volumes:
- files:/keepFiles/
- files:/imageFiles/
- files:/recordFiles/
- files:/packageFiles/
- files:/logs/
ports:
- "8094:8094"
- "8095:8095"
sonic-client-web:
image: "sonicorg/sonic-client-web:v1.3.1-beta"
environment:
# Si vous déployez sur le serveur ,localhostAu lieu de serveurip,portModifier comme suit:sonic-server-simpleExpositionport(Généralement inchangé)
- SONIC_API_HOST=172.28.253.211
- SONIC_API_PORT=8094
networks:
- sonic-network
ports:
- "3000:80"
volumes:
files:
mysql_db:
networks:
sonic-network:
driver: bridge
Puis suivez les instructions sur le site officiel runLève - toi.~
Et un ordinateur avec un téléphone branché Agent
Écrire des scripts automatisés
Sélectionnez un appareil Android pour entrer
Cliquez sur「Éléments de contrôle」-「 Obtenir l'élément de contrôle 」 Vous pouvez obtenir les informations de localisation de l'élément
Prends ça.xpath La Déclaration recommandée est prête.
Mettez - le dans le Code
- page:
pageName: home_android
desc: Page d'accueil_android
locators:
- {
desc: " Dossier enregistré ",type: "xpath",value: '//android.view.ViewGroup[contains(@content-desc,"Inscription,Tout le pays7800+Hôpital")]', name: "registered_text" }
De la même façon, j'ai obtenu le dossier d'enquête et d'achat de médicaments.
- {
desc: " Dossier enregistré ",type: "xpath",value: '//android.view.ViewGroup[contains(@content-desc,"Inscription,Tout le pays7800+Hôpital")]', name: "registered_text" }
- {
desc: " Dossiers d'interrogation ",type: "xpath",value: '//android.view.ViewGroup[contains(@content-desc,"Consultation,27 Dr Wan Online Service ")]', name: "inquiry_text" }
- {
desc: " Le dossier d'achat de médicaments ",type: "xpath",value: '//android.view.ViewGroup[contains(@content-desc,"Achat de médicaments, Les micro - médecins sont plus à l'aise d'acheter des médicaments pour eux - mêmes ")]', name: "buy_medicine_text" }
Obtenir le numéro de série de l'appareil
Déplacez la souris en haut à droite pour voir le numéro de série de l'appareil
Script
Ouvre.APP
Écrivez unfixture Pinces pour ouvrir APP
À l'avenir, vous pouvez mettre sys、udid、appMets - le.jenkinsfile Mise en œuvre de la construction paramétrique dans
@pytest.fixture(scope='module')
def home_android():
home = HomePage(file_name="home_android")
with allure.step(f" Ouvrez le micro - médecin APP"):
home.open_phone(sys='android', udid="8688dab6", app='wy')
home.click(home.home_index) # Aller à la page d'accueilTab
time.sleep(2)
yield home
home.close()
Lors du débogage, modifiez la valeur correspondant au téléphone ouvert. url
def open_phone(self, sys='android', udid="8688dab6", app='wys', apk=None):
""" Opération d'ouverture de l'extrémité mobile http://appium.io/docs/en/writing-running-appium/caps/ """
url = "http://172.28.57.33:4723/wd/hub"
desired_caps = {
"udid": udid}
if sys == 'android':
desired_caps['platformName'] = "Android"
if app == 'wys':
# Ouvrez le micro - Docteur APP
desired_caps["appPackage"] = "com.greenline.yihuantong"
desired_caps["appActivity"] = ".home.WelcomeActivity"
elif app == 'wy':
# Ouvrez le micro - médecin APP
desired_caps["appPackage"] = "com.greenline.guahao"
desired_caps["appActivity"] = ".home.WelcomeActivity"
desired_caps["skipServerInstallation"] = True
desired_caps["automationName"] = "UiAutomator2"
desired_caps["noReset"] = True
desired_caps["newCommandTimeout"] = 3600
elif sys == 'ios':
desired_caps['platformName'] = "iOS"
if app == 'wys':
# Ouvrez le micro - Docteur APP
desired_caps["bundleId"] = "com.minkanginfo.guahao"
elif app == 'wy':
# Ouvrez le micro - médecin APP
desired_caps["bundleId"] = "com.lvxian.guahao"
desired_caps["automationName"] = "XCUITest"
if apk:
desired_caps1 = copy.deepcopy(desired_caps)
desired_caps1["appPackage"] = "com.android.settings"
desired_caps1["appActivity"] = ".Settings"
driver = app_webdriver.Remote(url, desired_caps1)
if app == 'wys':
self.install_apk(driver, "com.greenline.yihuantong", apk)
elif app == 'wy':
self.install_apk(driver, "com.greenline.guahao", apk)
driver.quit()
print(desired_caps)
self.driver = app_webdriver.Remote(url, desired_caps)
self.wait_for(10)
return self.driver
Notez que l'intérieur de cette fonction est basé sur ce qui est réellement ouvert APP Pour apporter des modifications ou des ajustements
Modifier au besoin
appPackage
appActivity
Utilisez ceci ci - dessus url Doit être allumé sur l'ordinateur correspondant Appium, Port spécifié comme port par défaut 4723
Marcher dans la fosse
Paquet d'installation automatique
Installation automatique sur le téléphone de xiaomi APP Il y a toujours une boîte à ressort , Peut être modifié comme suit: :
Paramètres -> Gestion des autorisations -> Bouton de configuration en haut à droite -> USBGestion de l'installation ->Fermer
S'il n'y a pas de bouton de configuration dans le coin supérieur droit de la page de gestion des autorisations
Dans les options de développement -> DémarrageMIUIOptimisation ->Fermer
Retour à la page d'autorisation ,Vous pouvez voir Bouton de configuration en haut à droite
FermerUSB Après l'installation de la gestion ,AdoptionUSB Il n'y aura pas de fenêtre de confirmation lors de l'installation
Demande répétée d'installation uiautomator2
UtiliserAppium Lors du contrôle de certains téléphones Android , Répéter l'invite pour l'installation uiautomator2
desired_caps[“skipServerInstallation”] = True
Écrivez le corps du cas d'utilisation
Le contenu du cas d'utilisation est le même que la dernière fois , Mais cette fois, c'est ouvert. APP
@compose(feature="MicromédecineAPP", story="Page d'accueil", title=' Vérification des documents sous l'entrée principale ')
@pytest.mark.parametrize("way", ["registered_text", "inquiry_text", "buy_medicine_text"])
def test_home_android_text(home_android, way):
""" Test de rédaction sous le bouton * Inscription * Consultation * Achat de médicaments """
ele = getattr(home_android, way)
with allure.step(f"Voir{ele.desc}"):
text = home_android.get_attribute(ele, "content-desc")
if way == 'registered_text':
assert text == 'Inscription,Tout le pays7800+Hôpital'
elif way == 'inquiry_text':
assert text == 'Consultation,27 Dr Wan Online Service '
elif way == 'buy_medicine_text':
assert text == 'Achat de médicaments, Les micro - médecins sont plus à l'aise d'acheter des médicaments pour eux - mêmes '
Utiliser une approche paramétrique pour tester la conformité du texte à trois endroits
Exécution et visualisation des résultats
Après l'opération,DirectementSonic Voir les effets de l'exécution sur la plate - forme
Voir Code:https://gitee.com/zx660644/uitest/tree/first_android_test
IOS Même opération
Enfin, merci à tous ceux qui ont lu attentivement mon article, Ce lien de disque Web automatisé ci - dessous est aussi très complet que j'ai passé quelques jours à trier , J'espère que ça vous aidera aussi. !
Ces informations,Pour faire【Tests logiciels】 Pour un ami avancé, c'est l'entrepôt de préparation le plus complet et le plus complet. ,Cet entrepôt m'a accompagné dans les plus difficiles,J'espère que ça t'aidera aussi.!
Avant tout,En particulier dans le secteur de la technologie,Assurez - vous d'améliorer vos compétences techniques.J'espère que ça vous aidera.…….
边栏推荐
- Genicam gentl standard ver1.5 (2)
- Ppt production tips
- A summary of my recent situation in June 2022
- 测试/开发程序员真的是青春饭吗?世界是公平的,咱们都凭实力说话......
- Bitlock recovery occurs in win 10, and the blue screen error code is 0x1600007e
- Meichuang was selected into the list of "2022 CCIA top 50 Chinese network security competitiveness"
- Introduction notes to machine learning
- With favorable policies, more than 20 provinces and cities have launched the yuanuniverse development plan
- Array method
- Matlab exercises -- routine operation of matrix
猜你喜欢
Iso8191 test is mentioned in as 3744.1. Are the two tests the same?
Matlab exercises -- routine operation of matrix
Introduction notes to machine learning
有关函数模板的那些小知识-.-
first. Net core MVC project
政策利好,20多省市开启元宇宙发展规划
10:00面试,10:02就出来了 ,问的实在是太...
Go language -select statement
02 mongodb data types, important concepts and common shell instructions
Tiktok practice ~ pay attention to bloggers
随机推荐
Iso8191 test is mentioned in as 3744.1. Are the two tests the same?
Tiktok practice ~ pay attention to bloggers
短视频平台开发,点击链接、图片自动跳转到新的页面
How do I get the STW (pause) time of a GC (garbage collector)?
[small program practice series] e-commerce platform source code and function implementation
Genicam gentl standard ver1.5 (2)
Go语言学习教程(十四)
MySQL gets the current date of the year
01 overview, application scenarios, Download methods, connection methods and development history of mongodb
first. Net core MVC project
Single responsibility principle
Short video platform development, click links and pictures to automatically jump to a new page
Introduction to SQLSERVER database
In the era of video explosion, who is supporting the high-speed operation of video ecological network?
Little knowledge about function templates --
Reading notes of top performance version 2 (II) -- Performance observation tool
Recommended by Alibaba P8, Fiddler packet capturing tool (I)
Pinda general permission system (day 5~day 6)
JS逆向之巨量星图sign签名
27年,微软IE结束了!