Application Extjs de test RobotFramework
-
12-11-2019 - |
Question
Je teste une application Web ExtJS en utilisant RobotFramework et Selenium2Library, mais je ne peux pas localiser certains éléments HTML car ils se voient attribuer un ID dynamique.
Par exemple: Selenium2Library n'a pas pu localiser un bouton qui est le code HTML comme celui-ci:
<button type="button" id="ext-gen56" class=" x-btn-text silk-add">create vm</button>
J'ai essayé d'utiliser l'expression de détail XPATH et CSS, mais elles ne fonctionnent pas. Comment faire face à ce problème? Toute aide serait appréciée.
Les outils que j'ai utilisés sont RobotFramework et Selenium2Library qui sont utilisés pour les tests d'applications Web automatiques.
Parts of my test script:
// filename is A.txt
//this is a resource file including keywords which are used by testcase file
*** Keywords ***
open vmmanager page
[Timeout]
click element xpath=//table[3]/tbody/tr[2]/td[2]/em/button
create vm
[Arguments] ${vm_name} ${input_description}
click element xpath=//table[3]/tbody/tr[2]/td[2]/em/button
click element xpath=//td[2]/table/tbody/tr[2]/td[2]/em/button
click link xpath=//tbody/tr/td[5]/div/a
click link xpath=//tbody/tr/td[7]/div/a
input text xpath=//div/div/input ${vm_name}
click image xpath=//div/div/img
click element xpath=//div[22]/div/div
click image xpath=//div[3]/div/div/img
click element xpath=//div[19]/div/div
name is null
alert should be present ${expect}
click button xpath=//div[2]/div/div/div/div/table/tbody/tr/td/em/button
click button xpath=//td[5]/table/tbody/tr[2]/td[2]/em/button
contact engineer
alert should be present
click button ext-gen311
//filename is B.txt
//this is testcase file
*** Settings ***
Resource fiel A.txt
*** Test Cases ***
VC_VM_01
open vmmanager page
create vm ${empty} description
name is null
VC_VM_03
open vmmanager page
create vm valentine day
contact engineer
La solution
Je découvrirais simplement comment définir des ID statiques. Si vous n'avez pas accès au code d'application, je demanderais que les développeurs attribueraient des ID statiques aux composants. - Ce serait à mon humble avis la solution la plus simple.
Les ID générés signifient généralement que personne ne se soucie encore d'eux.
Autres conseils
Sans IDS, vous pouvez tester en utilisant _Near et _Under à partir du cadre d'automatisation de Sahi ... Je l'utilise, sa source open source ... j'ai une patience d'essayer différentes façons d'identifier les éléments ... c'est cool et bon ...
La plupart des éléments auront du texte présent sur eux.
xpath=//button[contains(text(), 'create vm')]
Une approche générique sera
xpath=//*[contains(text(), 'create vm')]