Page 1 sur 1

Cliquer sur un lien hypertexte

Posté : ven. 27 oct. 2017 11:47
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 1714 fois
suppr.png
suppr.png (1.39 Kio) Vu 1714 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.

Re: Cliquer sur un lien hypertexte

Posté : ven. 27 oct. 2017 15:17
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

Re: Cliquer sur un lien hypertexte

Posté : mar. 31 oct. 2017 00:50
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 ?....