Cliquer sur un lien hypertexte

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Shenazen
Niveau 2
Niveau 2
Messages : 18
Enregistré le : jeu. 19 oct. 2017 11:45
Status : Hors ligne

Cliquer sur un lien hypertexte

#1

Message par Shenazen »

Et salut à vous, comme promis dans mon dernier post, me revoilà !

Bon, cette fois, quelque chose de beaucoup plus simple, me semble-t-il, mais qui me complique la vie car ça ne marche pas. Je pense que sur ce soucis, vous aurez sûrement facilité à me répondre :lol:

Donc pour commencer, une petite image :
lien.png
lien.png (1.75 Kio) Vu 1473 fois
suppr.png
suppr.png (1.39 Kio) Vu 1473 fois
Comme vous pouvez le constater :

1ère image : Il y a un lien hypertexte et il change chaque jour et en permanence. Par contre, il reste toujours à la même place. Je ne veux pas utiliser de MouseClick ni de controlclick justement pour les problèmes de compatibilité. J'aimerais qu'il me trouve ce lien, et qu'il aille cliquer dessus.

2ème image : Celui-là ne change pas, il reste avec le même texte, mais même soucis, je n'arrive pas à aller cliquer dessus. Par exemple ce que j'utilise (je n'ai pas le code avec moi mais je vais essayer d'en faire un de tête rapidement :

Code : Tout sélectionner

#include <IE.au3>

_IELinkClickByText ($oObject, "A SUPPRIMER")
J'ai déjà fait énormément de recherche, mais aucune ne m'a été concluante...

Je suis vraiment désolé, là dans l'immédiat je ne sais pas comment mettre le code, je vous en remet un quand je serai au bureau. Dans tous les cas, merci d'avance pour l'aide que vous m'apportez.
lpau63
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 23 mars 2017 15:44
Status : Hors ligne

Re: Cliquer sur un lien hypertexte

#2

Message par lpau63 »

dans mon cas, pour un lien de déconnexion, j'utilise cette méthode

Code : Tout sélectionner

$ie_handle1 = winactivate("[CLASS:IEFrame]") ; get iexplore handle
$oIE = _IEAttach($ie_handle1 ,"HWND" ) ; reference to $o_object

$oLinks = _IELinkGetCollection($oIE)
	For $oLink in $oLinks
		$sLinkText = _IEPropertyGet($oLink, "innerText")
		If StringInStr($sLinkText, "Déconnexion") Then
			_IEAction($oLink, "focus")
			Send ("{ENTER}")
			ExitLoop
		EndIf
	Next
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Cliquer sur un lien hypertexte

#3

Message par walkson »

Bonjour
A priori, si ce sont des liens hypertexte, ils renvoient sur une page. Les "clics" ne sont pas utile (comme pour un bouton). _IENavigate() devrait être suffisant.
Dans le code, je stocke tous les liens dans un array (texte et lien) puis je fais une recherche selon le texte. Pour "Sujets actifs" par exemple, j'ai 3 liens identiques. J'utilise le dernier
L'intérêt d'un array est d'avoir le texte et les liens de la page d'origine et de pouvoir naviguer selon le texte recherché
#include <IE.au3>
#include <Array.au3>
Local $oIE = _IECreate("https://www.autoitscript.fr/forum/index.php")
Local $oLinks = _IELinkGetCollection($oIE)
Local $array[0][2]
Local $sTxt
For $oLink In $oLinks
   $sTxt &= $oLink.innertext &"|"& $oLink.href & @CRLF

Next
_ArrayAdd($array,$sTxt)
_ArrayDisplay($array,"tous les liens")
Local $iIndex = _ArrayFindAll($array, "Sujets actifs", 0, 0, 0,1,0)
_ArrayDisplay($iIndex,"Sujets actifs")
For $i = 0 To UBound($iIndex) - 1
   $A = $iIndex[$i]
   MsgBox(0,"Recherche Sujets actifs","Le texte: "& $array[$A][0] & @CRLF & "Le Lien: "& $array[$A][1])
   If $i = UBound($iIndex) - 1 Then _IENavigate($oIE,$array[$A][1])
Next
Est ce la bonne solution ?....
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre