Disons que j'ai la structure DOM suivanteComment puis-je casser une boucle d'éléments en interne
<table id="campaigns">
<tr>
<th>Name</th>
<th>Status</th>
</tr>
<tr>
<td>first data</td>
</tr>
<tr data-id="1">
<td>intern test at Fri, 09 Dec 2016 03:12:26 GMT</td>
</tr>
<tr data-id="2">
<td>intern test at Fri, 09 Dec 2016 03:12:26 GMT</td>
</tr>
<tr data-id="3">
<td>intern test at Fri, 09 Dec 2016 03:12:26 GMT edit</td>
</tr>
<tr data-id="4">
<td>another data</td>
</tr>
<tr data-id="5">
<td>next data</td>
</tr>
</table>
et voilà comment je le fais dans stagiaire
this.remote
.findAllByXpath("//*[@id='campaigns']/tr"") // get allitem from list
.then(function (options) {
return Promise.all(options.map(function (option) {
return option.getVisibleText()
.then(function (text) {
if (text.includes("intern test")) { // checked whether the value is exist
option.click(); // click the value
}
return text;
})
}))
})
mon exigence est que de cliquer sur un le texte qui contient "test interne". Ce code semble correct, mais ce qui se passe est que lorsque le stagiaire clique déjà sur le premier élément de l'instruction if, l'élément suivant semble également effectuer le clic et l'affichage de l'élément. Comment arrêter cette boucle et continuer quand elle a trouvé le 1er élément?
Merci pour toute aide fournissent
Je ne suis pas sûr que je comprends votre question. Pouvez-vous le reformuler? Y a-t-il plusieurs éléments à cliquer ou à multiplier? 'Promise.all' attendra que toutes les promesses soient résolues, le laissant ainsi fonctionner. Si vous voulez seulement attendre que * one * soit résolu, jetez un oeil à 'Promise.race()'. –
merci pour la réponse. Je veux seulement cliquer sur le 1er élément satisfaire l'instruction if, pas le 1er élément trouvé. Promise.race ne satisfera pas l'instruction if car elle prendra le 1er élément –