[Perl] Capturer un élément avec Selenium
L Boivin
elbeho at boivin.eu
Ven 26 Avr 11:18:01 CEST 2024
tldr: (ça va pas t'aider) use utf8 modifie le comportement des
string.
A propos de use utf8; un truc que j'ai appris hier au hasard
d'un conversation dont le niveau me dépassait, ce pragma ne se
contente pas de dire "le code est en UTF8" (ce que je traduisais
en 1re approx par "on peut mettre des accents dans les noms de variables").
Ca modifie aussi le comportement des string. Donc "éazé" n'est
pas encodé pareil avec et sans le use utf8;
C'est peut-être pour ça que tu as des comportements différents
avec et sans.
Ca ne t'aide pas vraiment.
Au mieux, une piste à creuser.
Bonne journée
Laurent
Le 26/04/2024 à 09:29, Patrice Karatchentzeff a écrit :
> Bon, en fait, c'est un peu plus complexe... J'ai l'impression que le
> module Selenium met un bazar pas possible dans l'encodage...
>
> Honnêtement, ça fait au moins 15 ans que j'utilise le pragma use utf8;
> en tête de programme sans me poser de question et tout fonctionne.
>
> Ici, c'est le bazar. Avec le pragma, toutes les chaînes affichées en
> console (qui est en UTF8) sont mal encodées, mais les chaînes envoyées
> au navigateur via Selenium le sont bien. Et vice-versa.
>
> Du coup, j'utilise seulement le pragma use Encode qw( decode_utf8 );
> et je décode les chaînes que j'envoie au navigateur (qui sont mal
> affichées si je ne les réencode pas pour les afficher en console).
>
> Il doit y avoir une raison de compatibilité avec tous les
> navigateurs/environnement derrière je suppose, mais quand on a un peu
> l'habitude de Perl, ça surprend de devoir se repencher sur la question
> en 2024 :)
>
> Bon, dommage que la liste ne soit pas archivée, car c'est le genre de
> truc que Google aurait pu me trouver en pas longtemps...
>
> PK
>
> Le jeu. 25 avr. 2024 à 13:55, Patrice Karatchentzeff
> <patrice.karatchentzeff at gmail.com> a écrit :
>>
>> En fait, non. En virant le pragma, je résous tous mes problèmes. Je ne
>> comprends pas pourquoi, mais au moins mon problème est résolu :)
>>
>> Le jeu. 25 avr. 2024 à 12:47, Patrice Karatchentzeff
>> <patrice.karatchentzeff at gmail.com> a écrit :
>>>
>>> Salut,
>>>
>>> Je n'utilise pas de fichier. Je passe une chaîne de mon script à
>>> Selenium qui lit une chaîne sur le navigateur. Maintenant que je
>>> l'écris, je me demande si cela ne vient pas de la conf du navigateur
>>> par Selenium. Je vais vérifier.
>>>
>>> Merci
>>>
>>> Le jeu. 25 avr. 2024 à 12:04, L Boivin <elbeho at boivin.eu> a écrit :
>>>>
>>>> Hello,
>>>>
>>>> Sur use utf8 , cela dit à perl que le CODE est en UTF8.
>>>> L'encodage des fichiers que tu vas manipuler n'est pas
>>>> influencé par ce pragma.
>>>> Il faut dire à l'ouverture que les fichiers sont en utf8
>>>> si c'est ce que tu veux.
>>>>
>>>> Pour XPath, Alex a répondu.
>>>>
>>>> Bye
>>>> Laurent
>>>>
>>>> Le 24/04/2024 à 09:24, Patrice Karatchentzeff a écrit :
>>>>> Salut,
>>>>>
>>>>> J'ai deux soucis avec Selenium. Le premier, plus gênant que bloquant,
>>>>> est que l'utilisation du pragma use utf8; fonctionne de travers. Tout
>>>>> ce que j'envoie sur le serveur est correctement encodé, mais ce que
>>>>> j'affiche dans la console avec des print est mal encodé... Et
>>>>> inversement. Et ma console est bien en utf8 :)
>>>>>
>>>>> Plus embêtant, je n'arrive pas à piger comment fonctionne
>>>>> $driver->find_elements.
>>>>>
>>>>> La documentation n'en dit presque rien et ne propose que des exemples
>>>>> triviaux. J'arrive à le faire fonctionner avec des exemples simples,
>>>>> mais évidemment, j'ai des besoins complexes :)
>>>>>
>>>>> Par exemple, tiré d'une page de recherche Google (qui fait tout pour
>>>>> rendre son code source imparsable)
>>>>>
>>>>> <h3 aria-hidden="true"><div class="GNJvt ipz2Oe"><span
>>>>> class="kQdGHd"><span class="OTvAmd z1asCe QFl0Ff"><svg
>>>>> focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24
>>>>> 24"><path d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6
>>>>> 6-6z"></path></svg></span></span><span class="RVQdVd">Plus de
>>>>> résultats</span></div></h3>
>>>>>
>>>>> Je veux sélection h3 aria-hidden="true" pour pouvoir ensuite récupérer
>>>>> l'enfant span « Plus de résultats ».
>>>>>
>>>>> Je sais sélectionner tous les h3, pas ceux avec cette propriété
>>>>> seulement. J'ai essayé
>>>>>
>>>>> $driver->find_elements("//h3[aria-hiden='true']")
>>>>>
>>>>> Mais ça juste marche pas :(
>>>>>
>>>>> Si quelqu'un peut m'expliquer comment le faire, pour que je pige, je
>>>>> louerai ses louanges perliennes jusqu'à la fin de l'Epoch...
>>>>>
>>>>> Merci
>>>>>
>>>>> PK
>>>>>
>>>> _______________________________________________
>>>> Perl mailing list
>>>> Perl at mongueurs.net
>>>> http://listes.mongueurs.net/mailman/listinfo/perl
>>>> Attention, les archives sont publiques
>>>
>>>
>>>
>>> --
>>> |\ _,,,---,,_ Patrice KARATCHENTZEFF
>>> ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff at gmail.com
>>> |,4- ) )-,_. ,\ ( `'-'
>>> '---''(_/--' `-'\_)
>>
>>
>>
>> --
>> |\ _,,,---,,_ Patrice KARATCHENTZEFF
>> ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff at gmail.com
>> |,4- ) )-,_. ,\ ( `'-'
>> '---''(_/--' `-'\_)
>
>
>
Plus d'informations sur la liste de diffusion Perl