2017-10-19 8 views
0

J'écris quelques tests E2E en utilisant Protractor. Il y a une zone de texte que je vais avoir de réelles difficultés à se rendre à ... en utilisant XPath stricte .//*[@id='_euj7snvsk'] ne fonctionnera pas parce que le texte dans « » change chaque run-time.élément dans lequel l'ID Protractor est une variable

est ici l'entrée autour de:

<div class="kf-input" _ngcontent-c17=""> 
 
<!----> 
 
<input id="_9b5w9rlmb" class="input kf-input-valid ng-dirty ng-valid ng-touched" _ngcontent-c17="" tabindex="0" placeholder="e.g. My living room project" required="" pattern="^[ A-Za-z0-9']{3,40}$" type="text"/> 
 
<!----> 
 
<!----> 
 
<!----> 
 
</div>

Essayé 'obtenir' à l'espace réservé et classe, mais avec zéro succès. S'il vous plaît, quelqu'un peut-il suggérer un moyen d'avancer? Merci David

+0

quel est le modèle ici par lequel la valeur des changements d'identité S'il vous plaît poste au moins 3 différents ID a changé ici?. –

Répondre

0

Essayez ceci:

//assign the variable id name in a string and use it in the locator 
var idString = '_9b5w9rlmb'; 
var inputElement = element(by.id(idString)); 
0

Avez-vous essayé d'obtenir l'élément via des sélecteurs CSS? Check out all possibilities here.

Voici ma suggestion pour votre cas:

element(by.css('div.kf-input div.input.kf-input-valid')).sendKeys('Some Text'); 

ou moins:

$('div.kf-input div.input.kf-input-valid').sendKeys('Some Text'); 

Notez que la sendKeys() est l'hypothèse que vous voulez saisir du texte. Ce n'est pas clair à partir de votre question, ce que vous voulez faire avec le terrain.

La deuxième classe .kf-input-valid pour identifier votre zone de texte n'est peut-être pas nécessaire et/ou peut être modifiée à partir de votre code. Donc, si vous n'avez pas besoin de cette 2ème classe pour identifier votre zone de texte de manière unique, allez-y sans elle.

En général, je recommande d'utiliser CSS-localisateurs au lieu de XPath. XPath est moins performant et plus difficile à maintenir à long terme.

+0

Merci Ernst - Oui, vous avez raison - je dois en effet d'envoyer un texte. –

+0

Redmayne @ David. Heureux je l'ai anticipé correctement. Ma suggestion a-t-elle fonctionné avec l'utilisation de CSS Selectors? –

+0

@DavidRedmayne Si la réponse a travaillé pour vous, si bon pour le marquer comme correct. Si cela n'a pas fonctionné, faites-moi savoir comment je peux l'améliorer. –