[R] Chercher puis cliquer

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

[R] Chercher puis cliquer

#1

Message par yohan8 »

Bonsoir,

J'aimerais que autoit me cherche sur une page web un texte.

Cette réponse je l'ai eu sur un forum :

Code : Tout sélectionner

 StringRegExp(BinaryToString(InetRead('http:\\monsite.fr')), "le texte voulu ")
Mais j'ai du mal a exploiter ce code, malgré les explications de l'aide de autoit (en anglais :? )


Ensuite je voie 2 possibilités :

- il me localise le mot et la phrase voulu sur l'axe 'X' et 'Y'
- il effectue directement l'action voulu en cliquant sur ce texte.

Si quelqun connais le code qui permettrait localiser ou de cliquer sur le texte trouvé m'aiderais beaucoup !

Yohan
Modifié en dernier par yohan8 le sam. 24 déc. 2011 00:04, modifié 1 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Chercher puis cliquer

#2

Message par sylvanie »

Bonsoir,
Les solutions à base de inetget + parsing (stringinstr, stringregexp ...) vous permettront effectivement de savoir si le texte est présent ou non dans la page, mais cela ne vous permettra pas de le localiser graphiquement pour cliquer dessus.

Regardez plutôt les exemples du fichier d'aide associés aux fonctions :
_IELinkClickByText et _IELinkClickByIndex qui sont certainement plus adaptées à votre besoins
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Chercher puis cliquer

#3

Message par yohan8 »

Bonsoir,

>>J'ai beau tenter de comprendre les explications de ce code il reste des points obscures :

Voici le code exemple que propose autoitscript.com

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IE_Example ("basic")
_IELinkClickByText ($oIE, "user forum")
J'aimerais qu'au lieu de prendre

Code : Tout sélectionner

_IE_Example ("basic")
qui vas m'ouvrir une nouvelle page, rester sur l'onglet déjà actif et chercher puis cliquer le texte voulu. Quelle code dois-je inscrire dans mon script ?

>>Il y a une autre point que j'aimerais éclaircir; il ce fait que sur ma page j'ai plusieurs lien de même nom. Comment pouvoir différencier ces liens sachant qu'il faudra tous les ouvrir.


>>Enfin si quelqun connais un tuto sur les

Code : Tout sélectionner

_IEAction

Code : Tout sélectionner

_IE_Introduction

[...] Et j'en passe

car mes connaissances ce bases sur le tuto du site du Zéro et il ne parle pas de la programmation des pages internets.


Yohan :)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Chercher puis cliquer

#4

Message par mikell »

yohan8 a écrit :Il y a une autre point que j'aimerais éclaircir; il ce fait que sur ma page j'ai plusieurs lien de même nom. Comment pouvoir différencier ces liens sachant qu'il faudra tous les ouvrir.
Tu peux repérer les liens par leurs index et avec les propriétés des objets IE, voir l'aide et/ou ce code :
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Chercher puis cliquer

#5

Message par yohan8 »

Merci de votr réponse mais je rame toujours dans la boue. Comme je l'est expliqué je n'est aucune connaissance sur la programmation sur internet, autrement dit sur les #include <IE.au3>, IE[...].

Commençons a déchiffrer le code vu qu'il existe aucun tuto sur ce sujet pour l'instant.

Code : Tout sélectionner

#include <IE.au3>

$n = 0 [color=#00BF00]; pourquoi pas ! [/color] 
$oIE = _IECreate("http://www.autoitscript.fr/forum/viewforum.php?f=3", 0, 1) [color=#008000]; On crée une page web a l'adresse indiqué[/color]
$oLinks = _IELinkGetCollection ($oIE) [color=#008000]; d’après autoitscript.com sa [/color] [color=#FF4000]'retourne un objet de collection'[/color] [color=#008000]?[/color]
For $oLink In $oLinks [color=#008000]; il énumère les[/color] [color=#FF4000]'objet de collection'[/color] [color=#008000]dans la page web.[/color]
    If $oLink.innertext == "yohan8" Then Exitloop [color=#008000]; si le text 'yohan8' n'y est pas on quite[/color]
    $n += 1 [color=#008000]; pourquoi pas ![/color]   
Next
msgbox(0,"", "Le lien pour yohan8 a le n° " & $n) [color=#008000]; que veut dire ce numéro ?[/color]
_IEQuit ($oIE)

$oIE = _IECreate("http://www.autoitscript.fr/forum/viewforum.php?f=3", 0, 0)
$myLink = _IELinkGetCollection ($oIE, $n)
_IENavigate($oIE, $myLink.href) [color=#008000]; ce code m'intéresse mais je ne le comprend pas ![/color]
_IELoadWait ($oIE) [color=#008000]; on attend que la page se charge[/color]
_IEAction ($oIE, "visible") [color=#008000]; on fait une action 'visible' ?[/color]
:shock:

En l'attente d'une réponse complète, Yohan.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Chercher puis cliquer

#6

Message par mikell »

yohan8 a écrit :vu qu'il existe aucun tuto sur ce sujet pour l'instant
Non mais il existe
- un fichier d'aide autoit, avec des exemples
- d'autres multiples exemples sur le forum, accessibles par la recherche
- un ami qui s'appelle Google
- des essais personnels, par exemple pour

Code : Tout sélectionner

$n = 0 [color=#00BF00]; pourquoi pas ! [/color]
si tu avais essayé le code sans cette ligne tu aurais eu un message d'erreur "variable non déclarée" et alors tu aurais compris "pourquoi" , etc
Bon revoilà le code avec commentaires, c'est juste un exemple de travail sur les liens d'une page
La 1ère partie du code récupère la position du lien dans la page , la 2ème l'utilise pour naviguer
► Afficher le texte
Note que comme précisé par sylvanie, pour la 2ème partie tu aurais aussi bien pu utiliser

Code : Tout sélectionner

$oIE = _IECreate("http://www.autoitscript.fr/forum/viewforum.php?f=3", 0, 0)
_IELinkClickByIndex ($oIE, $n, 1)  [color=#008000]; je vais quand même pas te traduire ça...[/color]
_IEAction ($oIE, "visible")
(il y a souvent plusieurs possibilités pour arriver au même résultat)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Chercher puis cliquer

#7

Message par yohan8 »

Bonsoir,

Merci mikell pour ton script (et de tes conseils :) ) mais je ne connais le nom entier de mon lien. Pour sa j'ai utilisé un autre script :

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IECreate("http://autoitscript.fr/forum/viewtopic.php?f=3&t=8900")

$sMyString = "suj" [color=#008000];j'ai écrit volontairement le nom du lien pas en entier[/color]
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
        _IEAction($oLink, "click")
        ExitLoop
    EndIf
Next
Mais ma page web comporte plusieurs liens de même nom et il faudrait que autoit me les 'clics' tous. C'est comme si dans mon exemple il faudrait cliquer tout les liens qui comporte le text 'suj'.

Yohan.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Chercher puis cliquer

#8

Message par mikell »

Code : Tout sélectionner

For $oLink in $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
        _IEAction($oLink, "click")
        Sleep(1000)    [color=#FF0000]; ExitLoop[/color]
    EndIf
Next
Si tu ne sors pas de la boucle il cliquera tous les liens pour lesquels la condition est remplie
Mais si le fait de cliquer sur un lien provoque un changement de page, ça va bugger ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Chercher puis cliquer

#9

Message par yohan8 »

Oui exact sa va bugger vu que sa m'ouvre une nouvel onglet a chaque fois ^^
Surtout qu'il faut qu'il m'ouvre chaque lien un par un mais pas en même temps.

Imaginons qu'il y est 3 liens

1-je clique sur le 1er lien
2-j’effectue une action
3-je ferme l'onglet qui c'est ouvert
4-je clique sur le 2ème liens
5-j'effectue une action
6-[...]

Une suggestion ?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Chercher puis cliquer

#10

Message par mikell »

Ben faut remonter les manches et faire chauffer les neurones...
Par exemple tu peux d'abord utiliser la boucle For pour relever la liste des liens et leur adresse ($oLink.href), puis ensuite les lancer un par un pour effectuer tes actions dessus
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Chercher puis cliquer

#11

Message par yohan8 »

Après quelques test je sèche complètement, mais paniquer pas je vais trouver :D

Mais j'ai remarqué que je ne pouvais pas utiliser plusieurs fois ce code :

Code : Tout sélectionner

$sMyString = "suj"
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")[color=#008000] ; et d’ailleurs je ne comprend pas cette ligne[/color]
    If StringInStr($sLinkText, $sMyString) Then [color=#008000]; ni celle-là [/color]
        _IEAction($oLink, "click")
        ExitLoop
    EndIf
Next
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Chercher puis cliquer

#12

Message par mikell »

Avant d'aller plus loin, il est fortement recommandé de comprendre les instructions que tu utilises dans ton script ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Chercher puis cliquer

#13

Message par yohan8 »

Bonsoir,
Bon là vraiment je trouve aucune solution. Comme tu me l'a prescrit, j’essaye d'intégrer le code 'For In' sans succès.

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IECreate("http://www.autoitscript.com/site/")

$n = 0 [color=#008000];J'ai voulu appliquer cette variable après 'Then' lgn 9 pour me lister ces 3 liens ... sans résultat.[/color]
$sMyString = "Jonathan Ben" [color=#008000];j'ai écrit volontairement le nom du lien pas en entier[/color]
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText");
    If StringInStr($sLinkText, $sMyString)Then
    [color=#008000];faire la liste des liens ,accessible par la suite, dont une partie de leur texte est 'Jonathan Ben'.[/color]
        ExitLoop
    EndIf
Next
J'ai tout d'abord essayé d'énumérer le nombre de liens qui m'intéresse.
Ensuite je pensais les lister du style $oLink1 ; $oLink2 [...]
Puis de les utiliser dans mon script

Si tu a un petit coup de pouce pour m'aider, je te remercie.

Yohan
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Chercher puis cliquer

#14

Message par mikell »

Pour faire la liste de liens

Code : Tout sélectionner

#include <IE.au3>
#include <array.au3>
$oIE = _IECreate("http://www.autoitscript.com/site/")

Dim $liens[1]   ; crée une array pour la liste des liens
$n = 0
$sMyString = "Jonathan Ben" 
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
       $liens[$n] = $oLink.href     ; enregistre le lien dans la liste
       $n += 1
       ReDim $liens[$n+1]     ; agrandit l'array  
    EndIf
Next
ReDim $liens[$n]
Msgbox(0,"","Il y a " & $n & " liens qui correspondent")
_ArrayDisplay($liens)
et ensuite pour les actions tu fais une boucle " For $i = 0 To $n-1 " en utilisant $liens[$i] pour les liens
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Chercher puis cliquer

#15

Message par yohan8 »

Hmm... Je n'arrive pas a passer au prochain lien. Il m'ouvre le premier lien, effectue les actions et ensuite m'ouvre le même lien.

En tout cas Merci ! :mrgreen: , c'est ce genre de script que je cherche.
Seb92
Niveau 1
Niveau 1
Messages : 2
Enregistré le : lun. 26 nov. 2012 18:16
Status : Hors ligne

Re: [R] Chercher puis cliquer

#16

Message par Seb92 »

Bonjour à tous,
je "déterre" ce post pour vous expliquer mon problème qui s'apparente fortement à celui de ce post.
Pour ma part, je cherche donc également tous les liens d'une même page, mais c'est dans l'URL que je cherche certains caractères (exemple une combinaison de 8 chiffres précédés d'un / ; par exemple : <a href="http://<url>/73629120.htm" title="titre">Le lien</a>)
Et là, je sèche ...

Merci pour votre aide précieuse.
Seb
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [R] Chercher puis cliquer

#17

Message par sylvanie »

Bonjour
Il serait plus judicieux à l'avenir d'en ouvrir un nouveau en citant celui-ci en référence, car son statu étant Résolu, il n'attire plus l'attention sur le fait qu'il nécessite de l'aide.

Sinon pour revenir à votre problème, il faut filtrer via stringregexp
En reprenant le code de ce post, modifié ainsi :
► Afficher le texte


et en remplaçant l'url par la votre, ça devrai faire l'affaire.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Seb92
Niveau 1
Niveau 1
Messages : 2
Enregistré le : lun. 26 nov. 2012 18:16
Status : Hors ligne

Re: [R] Chercher puis cliquer

#18

Message par Seb92 »

sylvanie a écrit :Bonjour
Il serait plus judicieux à l'avenir d'en ouvrir un nouveau en citant celui-ci en référence, car son statu étant Résolu, il n'attire plus l'attention sur le fait qu'il nécessite de l'aide.
Oup's :oops:
Bonjour Sylvanie,
Désolé de n'avoir pas ouvert un nouveau post, étant en mode "recherche sur ce forum" et pressé hier soir de poser au plus vite mon problème, je n'ai même pas vu que celui-ci avait un joli petit [R] (pourtant visible, promis je change de lunettes :lol: ) en sujet.

Merci pour l'aide, ça fonctionne désormais à merveille.

Problème ... comment dirais-je ... résolu :!: :lol:
Répondre