[R] Cliquer sur un endroit précis

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

[R] Cliquer sur un endroit précis

#1

Message par Shenazen »

Mesdames, Messieurs,

Je vous écrit aujourd'hui car j'ai un énorme soucis. Je n'arrive pas à faire mes clics là où je le veux. Je m'explique donc :

MouseClick ("Left", coordonnées x, coordonnées y)

Mais ce n'est pas ça que je veux, car je suis en BTS de développement donc j'utilise plusieurs écrans et à chaque fois, la compatibilité n'est plus bonne du tout. Donc ce que je voudrais savoir, c'est comment est-ce qu'on peut lui dire : Sur cette page, si il y a ce texte, (ou ce lien...) clique dessus.

Ce, vous l'aurez compris, afin de maximiser carrément les compatibilités. Car ça fait des jours que je cherche sur internet mais rien pour me renseigner, je demande à d'autres personnes qui me parle de capture d'écran, je bidouille le code pour tester tout et rien...

Je vous remercie d'avance pour votre aide, j'espère avoir été assez clair dans ma demande, et si j'ai oublié quelque chose, n'hésitez pas à me le dire.

Je vous remercie beaucoup d'avance.

Cordialement.
Modifié en dernier par Shenazen le ven. 20 oct. 2017 11:33, modifié 1 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Cliquer sur un endroit précis

#2

Message par orax »

Bienvenue sur le forum.
Il est généralement préférable d'utiliser ControlClick à la place de MouseClick.
S'il s'agit de cliquer sur des liens dans une page web, il est possible d'automatiser le navigateur. Pour automatiser Internet Explorer, il existe l'UDF IE.au3 ; les fonctions commencent par _IE, comme _IECreate, par exemple.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Shenazen
Niveau 2
Niveau 2
Messages : 18
Enregistré le : jeu. 19 oct. 2017 11:45
Status : Hors ligne

Re: Cliquer sur un endroit précis

#3

Message par Shenazen »

D'accord, je vais essayer cet UDF dès mon retour au bureau et je vous dirai ça. Mais si c'est pour un fichier Excel ou PowerPoint ? Je peux faire comment ? Et c'est quoi cette histoire d'utiliser un ScreenShot ?
Avatar du membre
TomAijerrie
Niveau 5
Niveau 5
Messages : 192
Enregistré le : lun. 02 juin 2014 09:55
Localisation : Lyon
Status : Hors ligne

Re: Cliquer sur un endroit précis

#4

Message par TomAijerrie »

C'est toi qui nous as parlé d'utiliser une capture d'écran. Nous n’avons pas vu les messages des personnes qui te demandent de faire ça, donc on ne peut pas t'aider. Peut être qu'ils t'ont demandé de leur envoyer un screen de tes écrans pour qu'ils puissent vérifier que tu n'as pas utilisé de mauvaise coordonnées.

Pour les fichiers Excel, il existe un UDF présent par défaut dans AutoIt https://www.autoitscript.com/wiki/Excel_UDF
Shenazen
Niveau 2
Niveau 2
Messages : 18
Enregistré le : jeu. 19 oct. 2017 11:45
Status : Hors ligne

Re: Cliquer sur un endroit précis

#5

Message par Shenazen »

Certes, je vous en ai parlé car quand j'ai demandé à mon patron et un de mes professeurs (Car je suis en alternance), ils m'ont tous les deux parler que ça fonctionnait par ScreenShot (Je crois que c'est le terme même qu'ils ont employé). Sachant que ces deux personnes étaient avec moi physiquement, il est donc normal que vous n'ayez pas vu leur post :lol: Et également, je leur ai montré donc ils m'ont pas dit de leur envoyer de capture.

Pour l'UDF IE, je suis encore en train de chercher car je n'arrive pas à le faire fonctionner correctement... Et merci pour la réponse pour Excel, ce lien je l'ai déjà consulté et ne m'a pas été d'une très grande aide, mais je vous remercie pour vos réponses. En espérant avoir d'autres réponses d'aide, cela m'apporterait énormément :D


Voilà par exemple le code que j'ai fait pour vous montrer un de mes soucis, il ne veut pas aller cliquer sur le lien que je lui ai demandé :

Code : Tout sélectionner

#include <IE.au3>

$oIE = _IECreate("http://google.fr")
WinActivate("Google")
Sleep(3000)
Send("Chat")
Send("{ENTER}")
Sleep(2000)
Local $oSubmit = _IEGetObjByName($oIE, "Images")
_IEAction($oSubmit, "click")
_IELoadWait($oIE)
Je vous remercie par avance :wink:
Modifié en dernier par orax le jeu. 19 oct. 2017 14:35, modifié 2 fois.
Raison : Remplacement de l'image par du texte (code).
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Cliquer sur un endroit précis

#6

Message par orax »

Pour arriver à mieux comprendre et pour trouver une solution adaptée, peut-on savoir quel est le but du script ? Automatiser des tâches ? Tester si une application est bien fonctionnelle ? Autre chose ?
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Shenazen
Niveau 2
Niveau 2
Messages : 18
Enregistré le : jeu. 19 oct. 2017 11:45
Status : Hors ligne

Re: Cliquer sur un endroit précis

#7

Message par Shenazen »

Pardon, entre-temps j'ai édité mon message au dessus.

Je cherche à cliquer sur le lien avec une demande autre que ControlClick ou MouseClick.

J'essai d'être le plus clair possible car je ne peux pas dire exactement le comment du pourquoi car c'est pour l'entreprise qui m'a demandé cette tâche et je ne peux rien dévoiler. Mais en gros c'est ça :wink: Voir même, je cherche à faire en sorte, que sur une page, il y a tel texte ou telle image, et je veux aller cliquer dessus par ce biais. Je vais essayer de trouver un exemple et je vous l'envoi :wink:
Modifié en dernier par orax le jeu. 19 oct. 2017 14:37, modifié 1 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Cliquer sur un endroit précis

#8

Message par orax »

J'ai supprimé l'image qui montre le code. On peut ajouter du code directement dans le message. Comme ça :

Code : Tout sélectionner

#include <IE.au3>

$oIE = _IECreate("http://google.fr")
_IELinkClickByText ($oIE, "Images")
_IELoadWait($oIE)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Shenazen
Niveau 2
Niveau 2
Messages : 18
Enregistré le : jeu. 19 oct. 2017 11:45
Status : Hors ligne

Re: Cliquer sur un endroit précis

#9

Message par Shenazen »

Ah ouais, c'est carrément mieux pour afficher le code! :lol:

Par contre, le code que tu m'as donné, fonctionne très bien sur google mais... Pas sur le site. J'ai juste remplacé l'acé l'adresse "Google.fr" par le site, puis le mot "Images" par le mot "Demandes" que j'ai sur le site sur lequel je veux appuyer. Mais là, ça ne fonctionne plus...

Il m'affiche ceci :
IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()
Shenazen
Niveau 2
Niveau 2
Messages : 18
Enregistré le : jeu. 19 oct. 2017 11:45
Status : Hors ligne

Re: Cliquer sur un endroit précis

#10

Message par Shenazen »

Voici en faites sur quoi je travaille :

Je veux faire cliquer sur le lien "demandes" en haut. Et à chaque fois, je change d'écran, donc je ne peux pas me permettre de le faire avec des coordonnées...
demandes.png
Shenazen
Niveau 2
Niveau 2
Messages : 18
Enregistré le : jeu. 19 oct. 2017 11:45
Status : Hors ligne

Re: Cliquer sur un endroit précis

#11

Message par Shenazen »

Bien le bonjour,

Grâce à des recherches bien compliquées, et le fait que ça fait un mois que je cherche, je suis venu sur ce forum hier pour poser mon problème. N'ayant eu aucune réponse pouvant régler mon problème parfaitement, je ne sais pas comment, mais j'ai réussi à faire ce que je voulais enfin.

Je vais mettre le petit [R] sur le titre pour résolu, mais avant, voici la solution :

L'histoire de la capture d'écran est en faites réellement ce qu'il fallait.
Vous faites une capture d'écran de la zone que vous souhaitez cibler. Vous l'enregistrez au format .bmp en 24bits. Ensuite, il vous faut un fichier _imagesearch.zip que vous trouverez ICI.

Vous suivez donc les indications de ce lien que je vous ai donné. Par la suite, il ne vous reste plus qu'à désigné votre image en .bmp et pour cliquer dessus par exemple, vous faites :

Code : Tout sélectionner

MouseClick (ou ControlClick) ("Bouton", $x1, $y1, 1, 10)
Ou comme moi vous pouvez déplacer un peu la souris sur l'image pour être sûr que ça clique bien dessus :

Code : Tout sélectionner

MouseClick ("Left", $x1 + 10 , $y1 + 10, 1, 10)
.


Voilà, et pour finir, pensez surtout, quand vous aurez télécharger le fichier, à ouvrir le script ImageSearch.zip et à mettre un espace avant chaque "byref" sinon ça ne fonctionnera pas.


Voici donc au final, la partie de code que je cherchais désespérément :

Code : Tout sélectionner

Func _imgdemandes()
	$x1=0
	$y1=0
	$demandes = "C:\Users\I15276\Desktop\Test\Projet Robot\Images\Demandes.bmp"

    $result = _ImageSearch($demandes,0,$x1,$y1,0)
    If $result=1 Then
		MouseMove ($x1 + 10, $y1 + 10, 10)
		MouseClick ("Left", $x1 + 10 , $y1 + 10, 1, 10)
	EndIf
EndFunc
Puis suite à ça, plus qu'à intégrer la fonction dans votre code source là où vous en avez besoin. Je tient à remercier les personnes qui ont tentés de m'aider, c'était super sympa, et je n'hésiterai pas à revenir régulièrement.

Merci à tous et bonne journée.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Cliquer sur un endroit précis

#12

Message par orax »

Merci de partager la solution.
Je pense qu'il aurait quand même été possible de faire autrement, mais si ça marche comme ça, tant mieux ! :) Je préfère utiliser ce type de solution qu'en dernier recours. Il y a un logiciel, Sikuli, qui permet de faire quelque chose de semblable. Je ne l'utilise pas, je ne le connais que de nom. https://alternativeto.net/software/sikuli/
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre