Puppeteer selection d'element en fonction de leur text

hypo -  
 hypo -
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   Statut Membre Dernière intervention   527
 
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
hypo
 
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