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
Était-ce utile?

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')]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top