[Perl] Capturer un élément avec Selenium

Alex Garel alex at garel.org
Mer 24 Avr 23:25:47 CEST 2024


Le 24/04/2024 à 09:24, Patrice Karatchentzeff a écrit :
> ...
> 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']")

Vu que la doc dit que find_elements prend du XPath par défaut. 
https://metacpan.org/pod/Selenium::Remote::Driver#find_elements

Je suppose que c'est du XPath que tu veux faire, mais dans ce cas il 
faut un @ devant le nom de ta propriété, et il faut deux "d" à hidden

$driver->find_elements('//h3[@aria-hidden="true"]')

J'ai mis des '' en extérieur de l'expression pour éviter à avoir à 
banaliser le @

Tu peux tester le XPath dans la console de firefox en utilisant 
$x("//expression-xpath")

Si je comprends bien la doc, tu peux aussi aller sur du CSS si tu es 
plus à l'aise (et là c'est $$() dans la console firexfox):

$driver->find_elements('h3[aria-hidden="true"]', "|css"|)

Je te laisse tester et voir si ça marche :-)

++Alex
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://listes.mongueurs.net/archives/perl/attachments/20240424/9e11746d/attachment.html>


Plus d'informations sur la liste de diffusion Perl