2017-06-29 2 views
2
<div class="LIJLHMB-ab-b-com-sencha-gxt-theme-neptune-client-base-field-Css3FieldLabelAppearance-Css3FieldLabelStyles-fieldElement" style="padding-left: 125px;"> 
<div id="x-auto-93" class="LIJLHMB-M-e-com-sencha-gxt-theme-neptune-client-base-field-Css3TextFieldAppearance-Css3TextFieldStyle-focus" __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true" style="width: 275px; height: 32px;"> 
<div class="LIJLHMB-M-i-com-sencha-gxt-theme-neptune-client-base-field-Css3TextFieldAppearance-Css3TextFieldStyle-wrap" style="width: 275px;"> 
<input id="x-auto-93-input" class="LIJLHMB-M-h-com-sencha-gxt-theme-neptune-client-base-field-Css3TextFieldAppearance-Css3TextFieldStyle-text LIJLHMB-M-c-com-sencha-gxt-theme-neptune-client-base-field-Css3TextFieldAppearance-Css3TextFieldStyle-field" type="text" style="width: 275px;" value="" tabindex="0"/> 
</div> 
</div> 
</div> 
<div class="LIJLHMB-ab-a-com-sencha-gxt-theme-neptune-client-base-field-Css3FieldLabelAppearance-Css3FieldLabelStyles-clearLeft"/> 
</div> 
</div> 

Ci-dessus est mon code. L'identifiant et la classe qui sont donnés sont auto id/class et changent chaque fois que la nouvelle version est installée. Alors dans un tel cas, comment trouver l'élément d'entrée de DOM tout en faisant de l'automatisation? Merci d'avance pour votre aide.Comment trouver un élément dans l'applilcation GWT quand aucun localisateur unique n'est donné?

Répondre

1

Avec l'annotation @external vous pouvez forcer certaines classes CSS/ids à exclure de faux-fuyants, de sorte qu'ils sont utilisables par des tests de sélénium:

@external legacySelectorA, legacySelectorB; 
.obfuscated .legacySelectorA { .... } 
.obfuscated .legacySelectorB { .... } 

Dans l'exemple ci-dessus, le sélecteur de classe .obfuscated sera obfuscated, et la méthode obfuscated() retournera le nom remplacé. Aucun des sélecteurs hérités ne sera obscurci et la méthode legacySelectorA() renverra la valeur non obso- lisee. En outre, étant donné que l'attribut legacySelectorB est explicitement défini dans la déclaration externe , le nom de la classe inaccessible ne déclenchera pas une erreur .

0

Je suppose que votre essaient de tester une application basée sur GXT 4.

Votre problème est que les noms de classes seront occultées et l'identifiant sont génériques. Donc, les deux ne peuvent pas être utilisés pour les tests.

Pour rendre votre application testable, ajoutez la ligne suivante à votre descripteur de module:

<inherits name="com.google.gwt.user.Debug"/> 

Et appelez ensureDebugId (Element el) pour chaque widget que vous voulez tester:

myWidget.ensureDebugId(myWidget.getElement(), "myDebugIdValue");