Puppeteer selection d'element en fonction de leur text

Fermé
hypo - 10 avril 2022 à 10:43
 hypo - 17 avril 2022 à 11:01
Bonjour,

Je me suis tres récement pencher sur puppeteer, et je bloque sur ça:

j'ai une page avec un Select:

<select _ngcontent-c13="" class="form-control ng-valid ng-touched ng-dirty">
<option _ngcontent-c13="" value="0: Object">avril 2022 </option>
<option _ngcontent-c13="" value="1: Object">mars 2022 </option>
<option _ngcontent-c13="" value="2: Object">février 2022 </option>
<option _ngcontent-c13="" value="3: Object">janvier 2022 </option>
<option _ngcontent-c13="" value="4: Object">décembre 2021 </option>
<option _ngcontent-c13="" value="5: Object">novembre 2021 </option>
<option _ngcontent-c13="" value="6: Object">octobre 2021 </option>
<option _ngcontent-c13="" value="7: Object">septembre 2021 </option>
<option _ngcontent-c13="" value="8: Object">août 2021 </option>
<option _ngcontent-c13="" value="9: Object">juillet 2021 </option>
<option _ngcontent-c13="" value="10: Object">juin 2021 </option>
<option _ngcontent-c13="" value="11: Object">mai 2021 </option>
<option _ngcontent-c13="" value="12: Object">avril 2021 </option>
<option _ngcontent-c13="" value="13: Object">mars 2021 </option>
<option _ngcontent-c13="" value="14: Object">février 2021 </option>
<option _ngcontent-c13="" value="15: Object">janvier 2021 </option>
<option _ngcontent-c13="" value="16: Object">décembre 2020 </option>
<option _ngcontent-c13="" value="17: Object">novembre 2020 </option>
<option _ngcontent-c13="" value="18: Object">octobre 2020 </option>
<option _ngcontent-c13="" value="19: Object">septembre 2020 </option>
<option _ngcontent-c13="" value="20: Object">août 2020 </option>
<option _ngcontent-c13="" value="21: Object">juillet 2020 </option>
<option _ngcontent-c13="" value="22: Object">juin 2020 </option>
<option _ngcontent-c13="" value="23: Object">mai 2020 </option>
</select>


Je voudrais pouvoir traiter les option fonction de l'annee indiquée dans le text, ici ce serait 2021. Mais je n'ai aucunes idée de la syntax.. j'aimerais pouvoir fair quelque chose qui ressemble a ça:

let select_month = await mes_documents.$eval('option', element => element);
    select_month.forEach(element => function (element) {
        if (element.textContent.match('2021')) console.log(element.value); 
    });
}


Si quelqu'un peut morrienté vers un bon tuto (parce que je ne pense pas que je ne bloquerais que la dessus, et pour l'instant le tutos que je trouve sont trop simplistes).

Merci d'avance !

Configuration: Windows / Firefox 100.0
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
14 avril 2022 à 13:25
Bonjour,

Quelque chose comme ceci ?
const options = document.querySelectorAll('option[_ngcontent-c13]');

options.forEach((option) => {
  if (option.textContent.match('2021')) {
    console.log(option.value);
  }
});
1
querySelectorAll semble ne pas conctionner avec puppeteer, j'ai cru comprendre que $$eval y fesait appel.

En tout cas pour ceux que ça interessera voici une syntaxe correcte:

const slected_months = await mes_documents.$$eval('option', options =>  options.map(anchor => {
        if (anchor.textContent.match('2021')) return anchor.textContent;
    }));
    console.log(slected_months);
0